Я пытаюсь обучить модель, которая считывает данные из CSV в качестве данных обучения. Для этого я пытаюсь выполнить одно горячее кодирование категориальных функций, а затем передать результирующие массивы единиц и нулей в качестве функций вместе с только ванильными числовыми функциями.
У меня такой код:
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
#...
onehotlabels[indexCount]
,row[9]
иrow[10]
- все списки. - person cs95   schedule 07.07.2017row[10]
содержит строки. Вы даже не можете преобразовать их в числа с плавающей запятой. - person cs95   schedule 07.07.2017