У меня есть два кадра данных, первый содержит> 700 предикторов в столбцах, а последний содержит один столбец. Первый используется как предсказатели (все со значениями 0 и 1, но в основном 0 из-за разреженности), а второй - как ответ на моделирование и тестирование модели. Первый имеет имя ser
, а второй - star
.Линейная регрессия с преобразованием tf-idf
Я использую следующие для ТФ-IDF преобразования
from sklearn.feature_extraction.text import TfidfTransformer
transformer = TfidfTransformer()
A = transformer.fit_transform(ser)
Ниже показана часть print(A)
(0, 302) 0.613133438876
(0, 202) 0.789979358042
(1, 556) 1.0
(2, 556) 0.432375068194
(2, 17) 0.901693850708
(3, 556) 0.269567465847
(3, 335) 0.671245025218
(3, 256) 0.400099662956
(3, 238) 0.562746618986
(4, 556) 0.401348891903
(4, 137) 0.915925251846
(5, 641) 0.785485510985
(5, 396) 0.618880046562
(6, 317) 0.525163047715
(6, 305) 0.851001629443
... (more are cut)
ли я использовать этот Tf-IDF преобразование все в порядке? Поскольку у меня есть следующее, я получаю сообщение об ошибке, которое опубликую в конце сообщения.
star = pd.DataFrame({"star": star})
data = pd.concat([ser, star], axis = 1)
from sklearn.linear_model import LinearRegression
D = LinearRegression()
Dfit = D.fit(ser, star, sample_weight = A)
Dpred = D.predict(ser)
Dscore = D.score(ser,star)
print(Dscore)
Ошибка
Traceback (most recent call last):
File "categories_model.py", line 67, in <module>
Dfit = D.fit(ser, star, sample_weight = A)
File "/opt/conda/lib/python2.7/site-packages/sklearn/linear_model/base.py", line 434, in fit
sample_weight=sample_weight)
File "/opt/conda/lib/python2.7/site-packages/sklearn/linear_model/base.py", line 127, in center_data
X_mean = np.average(X, axis=0, weights=sample_weight)
File "/opt/conda/lib/python2.7/site-packages/numpy/lib/function_base.py", line 937, in average
"1D weights expected when shapes of a and weights differ.")
TypeError: 1D weights expected when shapes of a and weights differ.
Может кто-нибудь помочь мне понять все это и как улучшить код? Спасибо!!