预测型数据分析:其它常用回归和分类算法

数据分析师(入门)     DC学院

本节视频主要内容是三个算法:kNN、DecisionTree、RandomForest,以及集成学习的思想

k近邻(kNN)

  • 原理:看新样本和训练集中的样本最接近的是哪一类,往往需要引入距离的计算

  • 距离:根据特征向量X计算不同样本之间的距离,d(X’,X”),最常用的是欧式距离

  • k近邻回归 :找到距离最近的K个样本,计算平均值 
    k近邻分类 :找到距离最近的K个样本,少数服从多数 
    也可在算法中将距离作为权重加权(如weight=1/d),使得离待判样本越近距离的训练集样本的权重越大

1.在Python中调用KNN算法

依旧使用到scikit-learn库

#用neighbors包来实现k近邻
from sklearn import neighbors
#k近邻分类
knn=neighbors.KNeighborsClassifier(n_neighbors,weights= 'uniform')
#k近邻回归
knn=neighbors.KNeighborsRegressor(n_neighbors,weights= 'uniform')
#训练模型
knn.fit(X,y)
score=cross_val_score(knn,X,y,scoring= '设定参数')

n_neighbors参数为近邻的数量k 
weights参数可以设定为uniform(即k个近邻点的权重都相同) 或者 distance(即k个近邻点的权重为距离的倒数)

2.iris数据集上使用KNN进行分类
#导入iris的数据集
import pandas
iris =pandas.read_csv( 'http://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data',header= None)
iris.columns=[ 'SepalLengthCm', 'SepalWidthCm', 'PetalLengthCm', 'PetalWidthCm', 'Species']
iris.sample( 10)
#数值化species字段
from sklearn.preprocessing import LabelEncoder
#初始化label
le=LabelEncoder()
le.fit(iris[ 'Species'])
#用离散值转化标签值
y=le.transform(iris[ 'Species'])
print(y)
features=[ 'PetalLengthCm']
X=iris[features]
from sklearn import neighbors
#k近邻分类,这里选择5个近邻
knn=neighbors.KNeighborsClassifier( 5,weights= 'uniform')
#可以使用fit 或者cross_val_score 函数来得到结果
from sklearn.model_selection import cross_val_score
score=cross_val_score(knn,X,y,cv= 5,scoring= 'accuracy')
import numpy as np
print(np.mean(score))
#尝试对函数的默认参数进行修改,如加权的方式、近邻的数量,看看结果如何
#尝试和上一节视频中学习过的linear regression的方法进行比较,看看哪种算法分类的效果更好
3.iris数据集上使用KNN进行回归
features=[ 'PetalLengthCm']
X=iris[features]
from sklearn import neighbors
#k近邻回归
knn=neighbors.KNeighborsRegressor( 5,weights= 'uniform')
#可以使用fit 或者cross_val_score函数来得到结果,修改成回归的评分标准
from sklearn.model_selection import cross_val_score
score=-cross_val_score(knn,X,y,cv= 5,scoring= 'neg_mean_squared_error')
print(np.mean(score))

决策树(Decision Tree)

每个节点上对某个特征进行判断,根据结果转向某个分支,如图是一个决策树示意图,每个节点根据某个条件分裂节点

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值