Sklearn回帰モデルの結果をvaribla予測に保存しています。
prediction = regressor.predict(data[['X']])
print(prediction)
予測出力の値は次のようになります
[ 266.77832991 201.06347505 446.00066136 499.76736079 295.15519906
214.50514991 422.1043505 531.13126879 287.68760191 201.06347505
402.68859792 478.85808879 286.19408248 192.10235848]
次に、to_csv関数を使用して、結果をローカルCSVファイルに保存しようとしています。
prediction.to_csv('C:/localpath/test.csv')
しかし、私が返すエラーは次のとおりです。
AttributeError: 'numpy.ndarray' object has no attribute 'to_csv'
Pandas/Numpy/SKlearnを使用しています。基本的な修正に関するアイデアはありますか?
パンダを使用できます。既に述べたように、numpy配列にはto_csv関数がありません。
import numpy as np
import pandas as pd
prediction = pd.DataFrame(predictions, columns=['predictions']).to_csv('prediction.csv')
値を行または列のようにする場合は、「。T」を追加します。
numpy.savetxt
関数を使用できます:
numpy.savetxt('C:/localpath/test.csv',prediction, ,delimiter=',')
cSVファイルを読み込むには、numpy.genfromtxt
関数を使用できます。
numpy.genfromtxt('C:/localpath/test.csv', delimiter=',')
これらのような非常に詳細なソリューションケースですが、実稼働環境でも使用できます。
最初にモデルを保存
joblib.dump(regressor, "regressor.sav")
列を順番に保存する
pd.DataFrame(X_train.columns).to_csv("feature_list.csv", index = None)
列車セットのデータ型を保存する
pd.DataFrame(X_train.dtypes).reset_index().to_csv("data_types.csv", index = None)
もう一度使用する:
feature_list = pd.read_csv("feature_list.csv")
feature_list = pd.Index(list(feature_list["0"]))
add_cols = list(feature_list.difference(X_test.columns))
drop_cols = list(X_test.columns.difference(feature_list))
for col in add_cols:
X_test[col] = np.nan
for col in drop_cols:
X_test = X_test.drop(col, axis = 1)
# reorder columns
X_test = X_test[feature_list]
types = pd.read_csv("data_types.csv")
for i in range(len(types)):
X_test[types.iloc[i,0]] = X_test[types.iloc[i,0]].astype(types.iloc[i,1])
予測の作成
regressor = joblib.load("regressor.sav")
predictions = regressor.predict(X_test)
予測結果の保存
res = pd.DataFrame(predictions)
res.index = X_test.index # its important for comparison
res.columns = ["prediction"]
res.to_csv("prediction_results.csv")
エンドツーエンドのモデル/予測セーバーコードをお楽しみください!