那最常用的当然是这两个库了:
import numpy as np
import pandas as pd
流程上来一般就是,先载入数据:
in_file = 'titanic_data.csv'
full_data = pd.read_csv(in_file)
后面就是display,这个不是直接调库,先不写。
下一步是把原始数据分开成一部分特征,一部分标签。往往用到这个语句:
data= full_data['Survived'] # 标签集
feature= full_data.drop('Survived', axis = 1) # 特征集
有时候,我们还要对分出来的特征数据集进行一下改动,可能会用到这些语句:
income = income_raw.replace(['<=50K', '>50K'], [0, 1]) # 替换
print data[0:1] # 选择第一行
print data.loc[1:3] # 行选择
print data.loc[1:3, ['age', 'race', 'sex']] # 行列选择
print data.iloc[1:3, 0:8] # 行列选择
print data[[0, 3, 6]] # 选择列
这里有一些最简单的统计运算:
#目标:计算价值的最小值
minimum_price = np.min(data['MEDV'])
# TODO: Maximum price of the data
#目标:计算价值的最大值
maximum_price = np.max(data['MEDV'])
# TODO: Mean price of the data
#目标:计算价值的平均值
mean_price = np.mean(data['MEDV'])
# TODO: Median price of the data
#目标:计算价值的中值
median_price = np.median(data['MEDV'])
# TODO: Standard deviation of prices of the data
#目标:计算价值的标准差
std_price = np.std(data['MEDV'])
sklearn中会有一些评价预测能力的函数,例如:
from sklearn.metrics import r2_score
score = r2_score(y_true, y_predict)
在看结果的时候,我们可能会想要自己想要的格式,注意format格式输出:
给个链接
print '{},{}'.format('kzc',18)
print '{1},{0},{1}'.format('kzc',18)
# 字符串的format函数可以接受不限个参数,位置可以不按顺序,可以不用或者用多次,不过2.6不能为空{},2.7才可以。
'{name},{age}'.format(age=18,name='kzc') # 通过关键字参数
# 富的的“格式限定符”(语法是{}中带:号)
'{:>8}'.format('189')
'{:0>8}'.format('189') # 输出:00000189
'{:a>8}'.format('189') # 输出:aaaaa189
# 精度与类型f
'{:.2f}'.format(321.33345) # 输出:321.33
'{:,}'.format(1234567890) # 千位分隔符。输出:1,234,567,890
有时候我们想要把原数据的一部分作为测试集,用这个语句:
from sklearn.cross_validation import train_test_split
X_train, X_test, y_train, y_test = train_test_split(features, prices, test_size=0.2, random_state=42) # 最后这个参数random_state给多少都可以。
在我们使用sklearn中的一些方法时,其实套路很简单,导入,学习(fit),预测(predict),就行了,如下:
# 高斯朴素贝叶斯 (GaussianNB)
from sklearn.naive_bayes import GaussianNB
NB = GaussianNB()
learner = NB.fit(X_train, y_train)
predictions_test = learner.predict(X_test)
这是一些常用的方法:
clfs = {}
# 高斯朴素贝叶斯 (GaussianNB)
from sklearn.naive_bayes import GaussianNB
clfs["NB"] = GaussianNB()
# 决策树
from sklearn import tree
clfs["DT"] = tree.DecisionTreeClassifier()
# AdaBoost
from sklearn.ensemble import AdaBoostClassifier
clfs["AB"] = AdaBoostClassifier()
# 随机森林
from sklearn.ensemble import RandomForestClassifier
clfs["RFC"] = RandomForestClassifier()
# K临近
from sklearn.neighbors import KNeighborsRegressor
# clfs["KN"] = KNeighborsRegressor(n_neighbors=2)
clfs["KN"] = KNeighborsRegressor()
# 随机梯度下降分类器 (SGDC)
from sklearn import linear_model
clfs["SGDC"] = linear_model.SGDClassifier()
# 支撑向量机 (SVM)
from sklearn.svm import SVC
clfs["SVC"] = SVC()
# Logistic回归
from sklearn.linear_model import LogisticRegression
clfs['LR'] = LogisticRegression()
不过,有时候你可能想用一下网格搜索:
from sklearn.model_selection import GridSearchCV
grid = GridSearchCV(estimator = regressor, param_grid = params, scoring = scoring_fnc, cv = cv_sets)
# 这几个参数的意思分别是:
# estimator 具体预测方法,例如决策树。
# param_grid 预测方法的参数,例如决策树的最大深度,这个参数用字典传入,这么写:params = {'max_depth':range(1,11)}
# scoring 评价方法
# cv 交叉验证方法
选取最终要的特征:
# TODO:导入一个有'feature_importances_'的监督学习模型
from sklearn import tree
# TODO:在训练集上训练一个监督学习模型
model = ExtraTreesClassifier()
model.fit(X_train, y_train)
# TODO: 提取特征重要性
importances = model.feature_importances_
# 绘图
vs.feature_plot(importances, X_train, y_train)
# 这里好像是提取了前五个最重要的参数,图像如下:
好了就这些。