2017-04-10 113 views
-3

我正在嘗試一些實踐的機器學習練習,因爲我仍然對此很陌生。我發現一個很好的問題開始,這是一個回合分類撲克牌手,我設法創建了下面的代碼,它工作正常,我設法預測測試數據手。MLP預測準確性

import pandas as pnd 
from sklearn.preprocessing import StandardScaler 
from sklearn.neural_network import MLPClassifier 
from sklearn.metrics import classification_report,confusion_matrix 

training_data = pnd.read_csv(".idea/train.csv") 
print(training_data) 
training_data['id'] = range(1, len(training_data) + 1) # For 1-base index 
print(training_data) 

test_data = pnd.read_csv(".idea/test.csv") 
result = pnd.DataFrame(test_data['id']) 
print(result) 
test_data = test_data.drop(['id'], axis=1) 

training_datafile = training_data 
labels = training_datafile['hand'] 
features = training_datafile.drop(['id', 'hand'], axis=1) 
scaler = StandardScaler() 
# Fit only to the training data 
scaler.fit(training_datafile) 
X_train = scaler.transform(training_datafile) 
X_test = scaler.transform(training_datafile) 
mlp = MLPClassifier(hidden_layer_sizes=(100, 100, 100)) 
mlp.fit(features, labels) 
predictions = mlp.predict(test_data) 
len(mlp.coefs_) 
len(mlp.coefs_[0]) 
len(mlp.intercepts_[0]) 
result.insert(1, 'hand', predictions) 
result.to_csv(".idea/ANNTEST.csv", index=False) 

現在我的問題是我該怎麼做才能檢查這個預測的準確度? 以下是我使用的數據集的片段。

Train data

Prediction Results

幫助和guideance將不勝感激!

+0

您可以簡單地使用「accuracy_score(original_result,predicted_result)」。請參閱文檔:http://scikit-learn.org/stable/modules/model_evaluation.html –

+0

是的,我已經試過,但我得到以下錯誤: raise ValueError(「{0}不支持」.format( y_type)) ValueError:不支持連續多輸出 – FrankU

+0

'hand'中可能存在的值是多少?如果它的連續間隔在0到某個數之間,那麼你應該嘗試迴歸,而不是分類。在這種情況下,請嘗試'mean_squared_error()'。 –

回答

1

只需使用正確預測結果的百分比即可。 python中有混亂矩陣和表函數。

假設你的測試結果是像如下

實際預測
A A
A B
B B
B A
B B

所以在這裏我們看到兩個值不匹配,所以精度爲60%