【问题标题】:Python Sklearn Predicting values on an unseen data setPython Sklearn 在看不见的数据集上预测值
【发布时间】:2018-07-29 19:00:20
【问题描述】:

我在一个数据库中有一组足球数据,我正在尝试为其预测值。

import MySQLdb
import pandas as pd
from sklearn.feature_selection import RFE
from sqlalchemy import create_engine
import mysql.connector
from matplotlib import pyplot

mysql_cn= MySQLdb.connect(host='database.rds.amazonaws.com',port=3306,user='username', passwd='password', db='dev')
games = pd.read_sql('SELECT game_id, game_date_id, home_team_id, away_team_id, referee_id, FTR, away_team_travel FROM   
dev.tmp_all_output_id  WHERE game_id < 6700;', con=mysql_cn)    

predict_games = pd.read_sql('SELECT game_id, game_date_id,      
home_team_id, away_team_id, referee_id, -10 AS FTR, away_team_travel FROM dev.tmp_all_output_id  WHERE game_id > 6700;', con=mysql_cn)

feature_names = ['game_id', 'game_date_id', 'home_team_id', 'away_team_id', 'referee_id', 'away_team_travel']
X = games[feature_names]
y = games['FTR']

# #Create Training and Test Sets and Apply Scaling
from sklearn.model_selection import train_test_split
validation_size = 0.20
seed = 7
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=validation_size, random_state=0)

from sklearn.ensemble import AdaBoostClassifier
ada = AdaBoostClassifier()
ada.fit(X_train, y_train)

predictions = ada.predict(X_test)

print('Accuracy of AdaBoostClassifier on training set: {:.2f}'.format(ada.score(X_train, y_train)))
print('Accuracy of AdaBoostClassifier on test set: {:.2f}'.format(ada.score(X_test, y_test)))

#cnx = create_engine('mysql+mysqlconnector://username:password@database.rds.amazonaws.com:3306/dev', echo=False)
#testResults.to_sql(name='tmp_all_output_prediction', con=cnx, if_exists = 'replace', index=False)

mysql_cn.close()

一旦我将数据集加载到数据框中并运行 test_train_split 和 fit in,我如何预测未见过的数据集的值并返回 game_id 和预测值 (FTR)?

正如您在代码中看到的,我有一个表 (tmp_all_output_id),在其中我将已知结果值选择到“游戏”中,并将未知(或未播放)结果选择到“预测游戏”中。我还为“predict_games”设置了 FTR(全时结果)= -10,因为此时这些游戏的结果尚不清楚。

但是如何使用我已经完成的训练来预测数据框“predict_games”的 FTR?

我尝试使用此代码进行预测,但是对于 FTR,它总是返回 0(平局),这肯定是不正确的。

testResults = predict_games[['game_id']]
testResults.is_copy = None
testResults['FTR'] = raw_prediction

我添加了以下代码:

unseen_prediction = predict_games[feature_names] new_predictions = ada.predict(unseen_prediction) print new_predictions

但是,每个预测值都返回为:-1(客场获胜),这是不正确的

【问题讨论】:

  • 没有数据和完整的代码,我们做不了什么

标签: python sklearn-pandas adaboost


【解决方案1】:

您的 ada 变量现在是经过训练的分类器实例。为了使用它对新数据进行分类,您构造了一个X,其中的数据格式对应于'game_id', 'game_date_id', 'home_team_id', 'away_team_id', 'referee_id', 'away_team_travel'

然后你运行ada.predict(X)就完成了!

问题是您目前只传递了 game_id。

【讨论】:

  • 我根据您的建议使用代码编辑了我的原始评论,但是它为每个预测返回相同的值。
猜你喜欢
  • 1970-01-01
  • 2018-06-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-22
  • 2019-04-06
  • 2019-03-15
  • 2023-04-04
相关资源
最近更新 更多