将文件文本中的字符串(字母)转换为整数

我是机器学习的新手。在尝试将字母转换为整数时遇到了一些问题。我使用的是Python 3.5,运行在Mac OS上。这是我的代码:

def file2matrix(filename):    fr = open(filename)    numberOfLines = len(fr.readlines())    returnMat = zeros((numberOfLines, 3))    classLabelVector = []    fr = open(filename)    index=0    for line in fr.readlines():        line = line.strip()        listFromLine1 = line.split('\t')        listFromLine = zeros(3)        i = 0        for value in listFromLine1:            if value.isdigit():                valueAsInt = int(value)                listFromLine[i] = valueAsInt                i += 1        returnMat[index, :] = listFromLine[0:3]        classLabelVector.append(int(listFromLine1[-1]))        index += 1    return returnMat, classLabelVector

这是我的文本文件内容:

23  8   1   f7   8   5   j5   9   1   j6   6   6   f

这是我遇到的错误:

  classLabelVector.append(int(listFromLine1[-1])) ValueError: invalid literal for int() with base 10: 'f'

有人可以帮我解决这些问题吗?


回答:

如果我正确理解了你的预期结果,你希望返回一个包含n个列表的列表。每个列表类似于[23. 8. 1.]。然后你希望有一个第二个列表,包含每个列表的最后一个数字,像这样:[1, 5, 1, 6]。

假设这一切都是正确的,你得到classLabelVector.append(int(listFromLine1[-1])) ValueError: invalid literal for int() with base 10: 'f'的原因是因为你返回的不是数字,而是一个字符串。我发现了三个问题,这些问题应该可以解决错误。

首先,我在你的文本文档中没有发现’\t’。我改用了listFromLine1 = line.split(' '),它基于空格进行分割。这可能是由于你发布时复制的方式造成的,不过。

其次,当你为listFromLine中的每个位置分配值时,你随后忽略了它,并从listFromLine1中追加,而你对listFromLine1什么也没做,所以它仍然是字符串。

第三,尝试使用if value.isnumeric():代替if value.isdigit():

解决这些问题应该可以使程序正常运行。此外,你打开文件并运行fr.readlines()两次,并且从未告诉它关闭。你让程序为相同的信息工作两次。你应该尝试重写它,只打开一次,并使用with open() as fr:,因为它完成后会自动关闭。

编辑:如果你希望第二个列表包含字母而不是数字,像[f, j, j, f],那么保持使用listFromLine1,并使用str()代替int():classLabelVector.append(str(listFromLine1[-1]))

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注