准备工作:
安装pandas
pip3 install pandas
数据加载和清洗
import os
import numpy as np
import pandas as pd
home_folder = os.path.expanduser("~")#os.path.expanduser(path) 把path中包含的"~"和"~user"转换成用户目录
data_folder = os.path.join(home_folder, "Data", "basketball")
data_filename = os.path.join(data_folder, "leagues_NBA_2014_games_games.csv")#数据文件名
results = pd.read_csv(data_filename)#加载数据集
results.ix[:5]#输出前5行,ix索引数据
#results = pd.read_csv(data_filename, parse_dates=["Date"], skiprows=[0,])#parse_dates解析“Date”的值为日期; skiprows需要跳过的行号列表(从0开始)
results = pd.read_csv(data_filename, parse_dates=["Date"])#当前文件第一行不为空,不需要跳过
results.columns = ["Date", "Start", "Visitor Team", "VisitorPts", "Home Team", "HomePts", "Score Type","OT?", "Notes"]#修改列名
results.ix[:5]
提取新特征
results["HomeWin"] = results["VisitorPts"] < results["HomePts"]#找出主场获胜的队伍
y_true = results["HomeWin"].values#保存为类别数据,方便scikit-learn后续分析
print("Home Win percentage:{0:.1f}%".format(100*results["HomeWin"].sum()/results["HomeWin"].count()))#count返回数据长度
results["HomeLastWin"] = False#创建新特征
results["VisitorLastWin"] = False#创建新特征
from collections import defaultdict
won_last = defaultdict(int)
for index, row in results.sort_values("Date").iterrows():#sort_values将results按时间顺序排序,获取每行的index、row
home_team = row["Home Team"]
visitor_team = row["Visitor Team"]
row["HomeLastWin"] = won_last[home_team]
row["VisitorLastWin"] = won_last[visitor_team]
results.loc[index] = row#更新当前行数据
# Set current win
won_last[home_team] = row["HomeWin"]
won_last[visitor_team] = not row["HomeWin"]
results.ix[20:25]
决策树
scikit-learn库生成决策树的默认算法是分类回归树算法(Classification and Regression Trees, CART)