Python MLPClassizer无法适应给定的训练标签
所以我有一个20000条记录的csv。第一列是标签列,每行由一个字母组成。其他列是属性,如宽度、高度等。我导入它并将每条记录复制到一个数组中Python MLPClassizer无法适应给定的训练标签,python,scikit-learn,Python,Scikit Learn,所以我有一个20000条记录的csv。第一列是标签列,每行由一个字母组成。其他列是属性,如宽度、高度等。我导入它并将每条记录复制到一个数组中 with open('Letter.csv') as f: reader = csv.reader(f) annotated_data = [r for r in reader] 现在我想将数据拆分为80-10-10拆分,而不使用train\u test\u split。因此,我: train_test_divide = int(0.8 * len(an
with open('Letter.csv') as f:
reader = csv.reader(f)
annotated_data = [r for r in reader]
现在我想将数据拆分为80-10-10拆分,而不使用train\u test\u split
。因此,我:
train_test_divide = int(0.8 * len(annotated_data))
X_train, X_test = annotated_data[:train_divide], annotated_data[train_divide:]
同样,对于其他10-10分割。所以现在我想把标签列复制到它自己的数组中,这样我就可以把它放入一个MLPClassizermlp.fit(X\u-train,y\u-train)
我试过:
for row in X_train:
y_train = row[0]
我得到的len
是1
,而np.shape
是()
,所以我知道这已经错了
于是我试着:
y_test = [row[0] for row in X_train]
当我打印这个
len
时,我得到16000,这是我想要的。如果我打印这个np.shape
,我会再次得到我想要的(16000,)
。但是现在,如果我尝试mlp.fit(X\u-train,y\u-train)
这个,我会得到一个错误,说不能将数组数据从dtype('float64')转换为dtype('我可以建议您使用的方法,它通过pandas和sklearn-train\u-test\u-split工作
import pandas as pd
df = pd.read_csv('Letter.csv')
labels = df[df.columns[0]] # Column 0 because you say it is the first one, but check this index.
# Better if you name the columns and call them by name
features = df[df.columns[1:]] # Again, check the content of features
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(features, labels, test_size=0.2)
如果
每行由一个字母组成
您的意思是,每一行都包含字符串,但在将字符串提供给您的ML模型之前,您可能需要对字符串进行矢量化
您可以发布csv文件的前几行吗?很抱歉,我不想使用train\u test\u split
。我使用种子进行洗牌。我还发布了前两行的示例