【发布时间】:2017-12-11 05:13:20
【问题描述】:
我正在尝试训练一个从 csv 读取数据作为训练数据的模型。为此,我尝试对分类特征进行一次热编码,然后将生成的 1 和 0 数组作为特征传递,以及普通数字特征。
我有以下代码:
X = pd.read_csv('Data2Cut.csv')
Y = X.select_dtypes(include=[object])
le = preprocessing.LabelEncoder()
Y_2 = Y.apply(le.fit_transform)
enc = preprocessing.OneHotEncoder()
enc.fit(Y_2)
onehotlabels = enc.transform(Y_2).toarray()
onehotlabels.shape
features = []
labels = []
mycsv = csv.reader(open('Data2Cut.csv'))
indexCount = 0
for row in mycsv:
if indexCount < 8426:
features.append([onehotlabels[indexCount], row[1], row[2], row[3], row[6], row[8], row[9], row[10], row[11]])
labels.append(row[12])
indexCount = indexCount + 1
training_data = np.array(features, dtype = 'float_')
training_labels = np.array(labels, dtype = 'float_')
log = linear_model.LogisticRegression()
log = log.fit(training_data, training_labels)
joblib.dump(log, "modelLogisticRegression.pkl")
好像快到了:
training_data = np.array(features, dtype = 'float_')
在它崩溃之前给出以下错误:
ValueError: setting an array element with a sequence.
我认为这是一个热编码值是数组而不是浮点数的结果。如何更改/调整此代码以将分类和数字特征处理为训练数据?
编辑:我正在输入的一行示例,其中每一列都是一个特征:
mobile, 1498885897, 17491407, 23911, west coast, 2, seagull, 18, 41.0666666667, [0.325, 0.35], [u'text', u'font', u'writing', u'line'], 102, 5
#...
【问题讨论】:
-
试过这个,但它给出了同样的错误
-
你能提供一些你的数据吗?调试会很有帮助。
-
添加了一个示例行!
-
这是来自 PostData2Cut 还是 Data2Cut?后者如何相关?你也可以发一下吗?
-
我的错误 - 我复制了错误的名称 - 两者都是 Data2Cut.csv - 仍然是同样的错误。
标签: python csv machine-learning scikit-learn one-hot-encoding