2017-06-23 15 views
0

私はPandas DataFrameの値に数値(浮動小数点数、整数など)を必要とする機械学習コードを実行しています。トレーニングセットおよびYは、ターゲットベクトルである):それを実行しようとしたときPandas DataFrame:文字列の列(?)をIntに変換する

from sklearn.linear_model import LinearRegression 
from sklearn.metrics import mean_squared_error 
lin_reg = LinearRegression() 
lin_reg.fit(X, Y) 
views_predictions = lin_reg.predict(X) 
lin_mse = mean_squared_error(Y, views_predictions) 
lin_rmse = np.sqrt(lin_mse) 
lin_rmse 

しかし、私はこのエラーを取得:

ValueError: could not convert string to float: original 

だから、私は私のデータフレームのDTYPEをチェックし、その私のtype列を参照してください文字列ではなくオブジェクトです...

final_df['type'] = (final_df['type'] == 'licensed').astype(int) 

は、残念ながら、私は奇妙なタイプのエラーを取得: 私は状況を改善するために、これを試してみました

TypeError: Could not compare ['licensed'] with block values 

これを解釈したり、問題を解決する方法がわかりません。

提案がありますか?

ありがとうございます!

+0

エラーは、オリジナルの文字列を浮動小数点に変換しようとしましたか?私たちはあなたのデータフレームを見ることができますか?あなたが変換できない文字列を持っていて、それが問題を引き起こしているのではないかと思います。 – jacoblaw

答えて

0

この例では、文字列として格納されている数字だけでなく、実際の単語を整数に変換しようとしているように見えます。

通常、このようなsklearnモデルの文字列を処理するには、文字列をプレースホルダの整数値にマップする必要があります。そうのようなマップを使用してみてください:

type_map = {value: i for i,value in enumerate(list(final_df['type'].unique()))} 

final_df['type_int'] = final_df['type'].map(value_map) 

は今、元final_df['type']列を削除し、あなたの計算に代わりfinal_df['type_int']を使用しています。

関連する問題