Python版数据挖掘实验4报告:用决策树预测获胜球队_第1页
Python版数据挖掘实验4报告:用决策树预测获胜球队_第2页
Python版数据挖掘实验4报告:用决策树预测获胜球队_第3页
Python版数据挖掘实验4报告:用决策树预测获胜球队_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、一、实验名称:用决策树预测获胜球队1、实验目的:用决策树预测获胜球队2、实验内容:用决策树预测获胜球队3、实验环境(设备、软件、实验数据):设备:笔记本电脑软件:Python idle实验数据:leagues_NBA_2013_standings_expanded-standings.csv, leagues_NBA_2014_games_games.csv3、实验步骤:1.加载库,读取数据并进行处理;import pandas as pdimport osfrom sklearn.model_selection import train_test_splitfrom sklearn.mode

2、l_selection import cross_val_scoreimport numpy as npfrom collections import defaultdictfrom sklearn.tree import DecisionTreeClassifierfrom sklearn.preprocessing import LabelEncoderfrom sklearn.preprocessing import OneHotEncoder#添加文件路径,路径最好不要出现中文dataFolder = "' G: leagues_NBA_2014_games_game

3、s.csv '"data_filename = os.path.join(dataFolder, "basketball", "leagues_NBA_2014_games_games.csv");with open(data_filename) as data_filename:# 读取数据的同时,将第一二列合并为一列dataset = pd.read_csv(data_filename, parse_dates=0,1# 我们可以通过下面这个方法对数据进行查看#dataset.iloc:5# 对数据重新命名头部dataset.col

4、umns = " Date "" Visitor Team" , "VisitorPts “'HomeTeam" , "HomePts" : OT?' “ Notes ” # 对数据进行排序并重新建立索引。当然也可以不进行排序,这个影响并不大。# sort()排序函数已经在 pandas0.20 以后被弃用,一旦使用将报错,只能使用 sort_values()/sort_index()dataset.sort_values(by="Date", ascending=True, i

5、nplace=True) dataset = dataset.reset index(drop=True)2. 创建字典,储存比赛结果,抽取数据特征;# 创建(默认)字典,用于存储球队上次比赛的结果。该语句作用为当字典内不存在查找的key时,返回括号内(factory_function )类型的默认值;int默认值0 won_last = defaultdict(bool)# 新增一列HomeWin,该列判断对应的数据是否主场胜利。将是否主场胜利作为预测结果 dataset" HomeWin" = dataset "VisitorPts " < d

6、ataset "HomePts”y_true = dataset " HomeWin" .values# 创建两个能帮助我们进行预测的特征,分别是这两支队伍上场比赛的胜负情况。赢得上场 比赛,大致可以说明该球队水平较高。dataset"HomeLastWin" = 0dataset"VisitorLastWin" = 0for index, row in dataset.iterrows():home_team = row"Home Team"visitor_team = row"Visitor

7、 Team"row"HomeLastWin" = won_lasthome_teamrow"VisitorLastWin" = won_lastvisitor_team dataset.ilocindex = row# 用当前比赛(遍历到的那一行数据所表示的比赛)的结果更新两支球队上场比赛的获胜情 况,以便下次再遍历到这两支球队时使用。won_lasthome_team = row"HomeWin"won_lastvisitor_team = not row"HomeWin"3. 从 scikit-lea

8、rn 库中导入 DecisionTreeClassfier 类,创建决策树;# 我们再次设定 random_state的值为14clf = DecisionTreeClassifier(random_state=14)X_previouswins = dataset"HomeLastWin", "VisitorLastWin".values# 交叉检验# X_train, X_test, y_train, y_test = train_test_split(X_previouswins, y_true, random_state=14)#clf.fit(

9、X_train,y_train)# 将数据导入分类器,并通过交叉检验。scores = cross_val_score(clf, X_previouswins, y_true, scoring='accuracy',cv=3)print( 初次使用决策树 Accuracy: 0:.1f%".format(np.mean(scores) * 100)输出结果:>»= RESTART: G;/Pythanm6,Liti/idl&lib/数据挖掘实验, py = 初次使用决策树肥curacy: 57.5%4. 导入新的数据集,创建一个新特征HomeT

10、eamRanksHigher并更新其值;standings_filename=os.path.join(dataFolder,"basketball","leagues_NBA_2013_standings_expanded-standings.csv"); with open (standings_filename) as standings_filename:standings = pd.read_csv(standings_filename,skiprows=0,); dataset"HomeTeamRanksHigher" =

11、 0 for index, row in dataset.iterrows():home_team = row"Home Team"visitor_team = row"Visitor Team"if home_team = "New Orleans Pelicans":home_team = "New Orleans Hornets"elif visitor_team = "New Orleans Pelicans":visitor_team = "New Orleans Horne

12、ts"# series搜索,口里面可以通过条件选择出对应行主场排名home_rank = standingsstandings"Team" =home_team"Rk".values0 #客场排名visitor_rank = standingsstandings"Team" =visitor_team"Rk".values0#判断一个队伍在主场获胜的排名和客场获胜的排名row"HomeTeamRanksHigher" = bool(home_rank > visitor_rank

13、) dataset.ilocindex = row5. 新增加HomeTeamRanksHigher#征,再次进行交叉检验;X_homehigher = dataset"HomeLastWin","VisitorLastWin","HomeTeamRanksHigher".values#建立决策树clf = DecisionTreeClassifier(random_state=14)scores = cross_val_score(clf, X_homehigher, y_true,scoring='accuracy'

14、;,cv=3) print("增力口新特征值 Accuracy: 0:.1f%".format(np.mean(scores) * 100)输出结果:»>= RESTART; G;/rython36/Lib/idlelib/数据挖掘实验, py =*«m增加新特征值配匕utmcy : 50. 7%>» I6. 统计两支球队上场比赛的情况,创建HomeTeamWonLast!征值,并更新其值,再创建决策树并使用 cross_val_score 函数测试结果; #创建字典,保存上场比赛的获胜队伍,在数据框中建立新特征。last_matc

15、h_winner = defaultdict(int) dataset"HomeTeamWonLast" = 0 for index, row in dataset.iterrows():home_team = row"Home Team"visitor team = row"Visitor Team"teams = tuple(sorted(home_team, visitor_team) row"HomeTeamWonLast" = 1 if last_match_winnerteams = row"

16、Home Team" else 0 dataset.ilocindex = row winner = row"Home Team" if row"HomeWin" else row"Visitor Team" last_match_winnerteams = winnerX_lastwinner = dataset"HomeLastWin", "VisitorLastWin", "HomeTeamRanksHigher", "HomeTeamWonLast

17、".values clf = DecisionTreeClassifier(random_state=14) scores = cross_val_score(clf, X_lastwinner, y_true, scoring='accuracy', cv=3) print("再次增加特征 Accuracy: 0:.1f%".format(np.mean(scores) * 100)输出结果: »>= RESTART; &"71卜0#6几通/1(11虱让|/数据挖掘买蛤.了 =再次增加特征配curacy_ 60.

18、 4%>» I7.引入LabelEncoder转换器,将主场球队名称转化为整型并抽取所有比赛的主客场 球队的球队名并将其组合起来,形成一个矩阵,引入OneHotEncoder转换器,通过将整数转换为二进制来消除球队编号之间的相似情况,创建决策树并使用 cross_val_score函数测试结果;encoding = LabelEncoder()t=encoding.fit(dataset"Home Team".values)home_teams = t.transform(dataset"Home Team".values)visitor_teams = t.transform(dataset"Visitor Team".values)X_teams = np

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论