Scikit-Learn的基本使用

Scikit-Learn是用Python开发的机器学习库,其中包含大量机器学习算法、数据集,是数据挖掘方便的工具。

Scikit-Learn的安装可使用pip工具,在安装前需要安装NumPy和SciPy,打开一个命令行中端并输入:

$pip install -U scikit-learn

基本操作:

1.数据加载:

对于csv文件,pandas库提供的pandas.read_csv能够快速的加载并根据提供的参数可进行数据的处理,生成DataFrame:

import pandas as pd

df=pd.read_csv('data.csv')

http://pandas.pydata.org/pandas-docs/stable/generated/pandas.read_csv.html(pandas api)


对于具有一定格式的文本文件或二进制文件,可使用NumPy进行数据加载:

import numpy as np

data_file='dataset.txt'

X=np.load_txt(data_file)


对于其他格式的文件,可以自由处理并加载到二维数组中,最终可生成DataFrame

2.数据处理:

在将数据加载到DataFrame中后可方便地对数据进行处理,也可以方便地进行特征选择与提取

import pandas as pd

df = pd.read_csv('data.csv')

df.columns = ['id','name','time']#设置数据的特征名

df.set_index('id')#设置索引

df['age'] = 0 #添加新的属性age,并全部赋值为0

for i,row in df.iterrows(): #逐行遍历dataframe

#body of for

http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.html(DataFrame Api)


3.一个分类的例子:

用决策树预测获胜球队(来自《Learning Data Mining With Python》)

采集数据:http://www.basketball-reference.com/leagues/NBA_2014_games.html提供了2013-2014的比赛胜负数据,不过已经无法一键导出csv了,需要一个月份一个月份地进行csv的复制

样例数据如下:


所有数据保存到文本文件并另存为CSV文件以便后面的使用。

接下来就是加载我们的CSV文件:data.csv

import numpy as np

import pandas as pd

dataset = pd.read_csv('data.csv') #注意文件在自己电脑中的路径

print dataset.ix[:5] #查看前5行数据

数据处理:

read_csv函数有一定的数据处理能力,所以我们修改一下刚刚的代码

dataset = pd.read_csv('data.csv',parse_dates=["Date"],skiprows=[0,]) #将'Date'属性转换为了标准日期类型,省略了第一行

dataset.columns = ["Date","Score_Type","Visitor Team","VisitorPts","Home Team","HomePts","OT?","Notes"]


提取新的特征:

dataset['HomeWin'] = dataset["VisitorPts"] < dataset["HomePts"]

y_true = dataset['HomeWin'].values #提取出一列数据

                #创建字典存储球队上次比赛的结果

from collections import defaultdict

won_last = defaultdict(int)

for index,row in dataset.iterrows():

home_team = row["Home Team"]

visitor_team = row["Visitor Team"]

row["HomeLastWin"] = won_last[home_team]

row["VisitorLastWin"] = won_last[visitor_team]

dataset.ix[index] = row

win_last[home_team] = row["HomeWin"]

win_last[visitor_team] = not row["HomeWin"]

使用决策树:

from sklearn.trree import DecisionTreeClassifier

clf = DecisionTreeClassifier(random_state=14)

X_previouswins = dataset[["HomeLastWin","VisitorLastWin"]].values

scores = cross_val_score(clf,X_previouswins ,y_true,scoring='accuracy')

你可能感兴趣的:(Python,Scikit-Learn,数据分析)