Модели Sklearn не могут принимать векторные входы TFIDF - PullRequest
0 голосов
/ 09 марта 2020

У меня есть модель случайной лесной регрессии. Идея состоит в том, чтобы прогнозировать заработную плату как функцию от входных данных TFIDF. Процесс токенизации работает без сбоев. Я не уверен, почему возникает следующая ошибка:

from sklearn.ensemble import RandomForestRegressor
rfr = RandomForestRegressor(n_estimators=25)
rfr.fit(m0.tfidf,m0.target)

>>>> ValueError: could not convert string to float: 'UKN'

Где мой ввод выглядит следующим образом

print(m0.tfidf)
>>>>

  (0, 81730)    0.08678124719228941
  (0, 81720)    0.4051829832483614
  (0, 81308)    0.02466923385401487
  (0, 80658)    0.09283202518518077
  (0, 79980)    0.037640159320294915
  (0, 78655)    0.08005811714948727
  (0, 78110)    0.1397255873105042
  (0, 78008)    0.03997373149323637
  (0, 77736)    0.04180617133028598
  (0, 77311)    0.05507981089212824
  (0, 76997)    0.10662513817286097
  (0, 75593)    0.027872186016968326
  (0, 75568)    0.043971243890655834
  (0, 74902)    0.04832667968768722
  (0, 73157)    0.022533926065197177
  (0, 72647)    0.0349761677792586
  (0, 71808)    0.024035496522681176
  (0, 71074)    0.10259091123985954
  (0, 71068)    0.029069548629712276
  (0, 69111)    0.034672135261239224
  (0, 67955)    0.028020431168325064
  (0, 67295)    0.08966352907219226
  (0, 67271)    0.07466916102470975
  (0, 65680)    0.07633327292778912
  (0, 65582)    0.06302560391647538
  : :
  (33176, 14634)    0.06590551471195294
  (33176, 13543)    0.10461979226562991
  (33176, 13456)    0.13212282016340926
  (33176, 13334)    0.06442044467320687
  (33176, 13305)    0.08944519590878486
  (33176, 12986)    0.12141184143278444
  (33176, 12422)    0.07503587946081758
  (33176, 12078)    0.055370951522851375
  (33176, 12072)    0.05526753229884225
  (33176, 11351)    0.06005084727061667
  (33176, 11228)    0.04758053186984806
  (33176, 10976)    0.05649949678481916
  (33176, 10386)    0.03386386645277619
  (33176, 10180)    0.0874550089809755
  (33176, 10178)    0.10022395321154942
  (33176, 8422) 0.041895956703497765
  (33176, 5090) 0.042348177892434245
  (33176, 4572) 0.03430959811550174
  (33176, 3952) 0.03911645709026695
  (33176, 3565) 0.053420564985650364
  (33176, 3191) 0.03409252329522664
  (33176, 2574) 0.06556944792700295
  (33176, 2168) 0.03405895402746877
  (33176, 804)  0.11463326965951669
  (33176, 483)  0.03643119719769616

print(m0.target)
>>>>
job_template_id
0a1503121721392501811267    22.04
0a1503121721483290712244    24.51
0a1503121721565752313317    24.51
0a1503121722295642819615    39.45
0a1503121722362699720498    52.41
                            ...  
z16092315345694244686913    33.38
z1609240007114166452790f    33.89
z1609261351036745094491a    28.85
z1609261614080106125891c    17.61
z16092623135294934160908     43.4

Как видите, m0 является экземпляром определенного пользователем класса ; по сути это просто оболочка данных. Если вам нужна дополнительная информация, см. Мой связанный вопрос Python NLP - ValueError: не удалось преобразовать строку в число с плавающей точкой: 'UKN'

...