fasttextをscikit-learnのように扱いたい
scikit-learnを始めって触った時に、とても使いやすかったので、これのfasttext版ないのかな〜、と思ってたら、shaypal5/skiftというまさにこれっていうのがありました。
基本的にREADME.rst見たらできるんですが、一点ハマったので同じことにハマる人が困らないよう書き残しておきます。
はまりどころ
import pandas as pd
from skift import FirstColFtClassifier
from sklearn.cross_validation import train_test_split
from sklearn.metrics import mean_squared_error
df=pd.read_csv('/path',names=['lbl','txt'])
y = df['lbl']
X = df[['txt']]
X_train, X_test, y_train, y_test=\
train_test_split(X,y,test_size=0.3)
sk_clf = FirstColFtClassifier()
sk_clf.fit(X_train, y_train)
y_pred = sk_clf.predict(X_test.values.tolist()) # ここ!
rf_mse = mean_squared_error(y_test, y_pred)
print('MSE:', rf_mse)
sk_clf.predict()
に思考停止でX_testを入れてたら
AttributeError: 'float' object has no attribute 'find'
というエラーが出てきて無為に時間を過ごしてしまったのですが、ここには二重list形式で入れるべきだったんですよね。よしなにdfのままやってくれよ、と思うのですが。
よって、X_test.values.tolist()
こんな感じでこっちから歩み寄る必要があります。