【ML笔记 1】sklearn和机器学习实战

@ 2018-01-24

1 机器学习基础知识

从过去的大量数据中“总结”出来“泛化规律”,用于新数据预测。

  • 3种不同类型的机器学习

    • 有监督学习,数据中已经存在标签值,算法通过这些带标签的样本(监督)习得“经验”,当新数据到来时,将习得的“经验”用于预测新数据的标签值;
    • 无监督学习,数据中没有所谓的“标签”(无监督),无监督算法需要从现有数据中发现数据之间的关系,例如聚类算法、关联规则等;
    • 强化学习,是一个与环境不断交互的过程。在环境中做一些动作,得到环境的当前的状态、奖励等;
      3种不同类型的机器学习
  • 构建机器学习系统的一般流程

    • 数据预处理:归一化、缺失值填补、One-hot coding、降维、Sampling
    • 模型学习(建模):模型选择、交叉验证、性能指标、超参数
    • 评估:训练模型评价其好坏——准确率、召回率、F1、AUC……
    • 预测
      机器学习的一般流程

2 sklearn入门宝典

一个大而全的Python机器学习库
1.sklearn入门页面
2.sklearn算法指南页面
3.算法API页面

3 sklearn建模实战

3.1 KNN

from sklearn import neighbors, datasets, preprocessing
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score

# 加载数据
iris = datasets.load_iris()

# help(iris)
iris.feature_names

# iris.data # numpy的数组(本质上是一个矩阵)
train_X,train_y = iris.data[:,:2], iris.target

# 将数据集切分成训练集和测试集
X_train,X_test,y_train,y_test = train_test_split(train_X,train_y, random_state=100,test_size=0.2) 

# 数据预处理
scaler = preprocessing.StandardScaler().fit(X_train)
X_train = scaler.transform(X_train)
X_test = scaler. transform(X_test)

# 用KNN预测,取最近的5个邻居(K=5)
# help(neighbors.KNeighborsClassifier)
knn = neighbors.KNeighborsClassifier(n_neighbors=5)
knn.fit(X_train,y_train)
y_pred = knn.predict(X_test)

# 评估-准确率
# sum(y_test==y_pred)/float(y_pred.shape[0]) # 手算
accuracy_score(y_test,y_pred) # 0.90,模型在测试集上的测试结果

3.2 SVM

from sklearn import svm 
svc = svm.SVC(kernel='linear')
svc.fit(X_train,y_train)
svm_pred = svc.predict(X_test)
accuracy_score(y_test,svm_pred) #0.83, SVM 不一定有最好的效果:1)只有2个维度;2)kernel的选择(本实验中改成rbfaccuracy相同,基本可以确定是特征的问题)

3.3 网格搜索交叉验证

# 网格搜索交叉验证
from sklearn.grid_search import GridSearchCV
import numpy as np

# 参数列表:邻居范围1-5,距离评价指标:欧氏距离和曼哈顿距离
params = {"n_neighbors":np.arange(1,5),"metric":["euclidean","cityblock"]}
grid = GridSearchCV(estimator=knn, param_grid=params)
grid.fit(X_train,y_train)
print(grid.best_estimator_) # 最好的距离评价指标——欧氏距离
print(grid.best_score_) # 最好的得分——0.741,是将训练集默认切成3-fold做交叉验证,最后得分是交叉验证的平均结果
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值