2016-07-22 2 views
1

У меня есть два кадра данных, первый содержит> 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. 

Может кто-нибудь помочь мне понять все это и как улучшить код? Спасибо!!

ответ

0

Ошибка возникает из-за неправильной трансформации матрицы. Это решает проблему.

Dfit = D.fit(A, star) 

 Смежные вопросы

  • Нет связанных вопросов^_^