机器学习笔记----sklearn库API的调用过程和适用场景总结(1)

总之就是一菜鸡呗,各种机器学习算法具体代码实现不太懂,暂时只能学着调用一下sklearn库里的API
嘛,一步一步来,加油

一.线性回归
1.导入

    from sklearn.linear_model import LinearRegression

2.准备数据,并分训练集和数据集

  from sklearn.model_selection import train_test_split
    x_train,x_test,y_train,y_test = train_test_split(x,y,test_size=0.3,random_state=2)

这里的x,y都是DateFrame类型(而比如x[1]就是Series类型)

3.数据的标准化

    ss = StandardScaler()
    x_train_s = ss.fit_transform(x_train)
    x_test_s = ss.transform(x_test)

关于标准化的一个简书:https://www.jianshu.com/p/2a635d9e894d

4.初始化模型,训练模型并输出线性模型的斜率和截距

    lr = LinearRegression()
    lr.fit(x_train_s,y_train)
    print(lr.coef_)
    print(lr.intercept_)

5.用模型预测并打分

    y_predict=lr.predict(x_test_s)
    lr.score(x_test_s,y_test)(score函数的参数分别为x集中的属性和y集中的标签)
  1. LinearRegression()的参数
    fit_intercept:是否有截距,如果没有则直线过原点;
    normalize:是否将数据归一化;
    copy_X:默认为True,当为True时,X会被copied,否则X将会被覆写;
    n_jobs:默认值为1。计算时使用的核数

7.适用场景:
目标值是连续的值就可以用回归算法来做,回归就是在找一种趋势
面对训练数据十分庞大的任务

二.k-均值算法
1.聚类算法,无监督学习,不需要数据集进行学习,将数据进行分类。

2.实现原理:
选择k个点为初始质心(即要告诉算法需要分几类)
repeat
将每个点指派到最近的质心,生成k个簇
重新通过计算距离计算每个簇的质心(根号[(x1-x2)^2)+(y1-y2) ^2]
until
簇不发生变化或者到达最大次数
3.代码实现

from sklearn.cluster import KMeans#cluster即聚类
data = pd.DataFrame({'X': np.random.randint(1, 50, 100), 'Y': np.random.randint(1, 50, 100)})
Data = pd.concat([data+50, data])  # 合并两个数据集,实际上是把数据分为了两类,注意参数是列表形式
#  下面是kmeans算法的代码实现
y_pred = KMeans(n_clusters=2).fit_predict(Data)  # 分为两类
plt.style.use('ggplot')
plt.scatter(Data.X, Data.Y, c=y_pred)
plt.show()  # 绘图画出数据
score = metrics.calinski_harabasz_score(Data, y_pred)  # 参数为数据集和预测结果,值越大,效果越好
print(score)

4.实战操作.小麦数据集

(存在jupyter里面了)

5 .k均值算法的局限性
1.探索数据之前,指定k值是一个挑战,因为不知道k多少为合适
2.对称分布(双环形会有错误)
3.不够精细。对异常值的处理不够敏感(如想单独分离出数值特别高或者特别低的数据,就难以做到,这种情况就应该适用DBSCAN)

6 . 额外的笔记
当你使用sklearn的时候,输入数据时,最好用DataFrame形式,用Series的形式的话需要reshape一下
如 *****.fit_predict(data[[‘x1’, ‘x2’, ‘x3’]])(DataFrame形式)
**.fit_predict(data.y.reshape(-1,1).values)(Series形式)

三.DBSCAN算法
1.同样的,是一个聚类算法
2.基于密度 ,计算两个点的距离,到达要求就聚为一类,然后对新加入的值再进行距离计算,所以参数之一为距离(epslion)
3.另一个参数为每一个类中的最小数量 如果数量太小就会被认定为异常值(对异常值的敏感程度高于KMeans)
4.代码实践
同样,放在jupyter里面
5.额外的笔记
在jupyter中输入函数名加问号可以看该函数的参数以及其默认值
如下图
在这里插入图片描述
第一个参数为距离,第二个参数为每个聚类要求的最小数量

四.逻辑回归
1.数学基础:sigmoid函数
在这里插入图片描述
可以很好的解决概率问题和回归问题
2.回归问题本质上是一种监督学习,已经知道结果,需要计算系数(如y=ax1+bx2+cx3+d1,知道y的值,计算abcd的值)
3.实战 德国信用卡欺诈问题
代码在举派尤特人notebook上
4.额外的笔记:分类和回归的区别:https://blog.csdn.net/zhuiqiuzhuoyue583/article/details/80354172

五.决策树算法
1.根据信息熵(减小熵即信息增益),分类的指标为对信息熵的减少量。什么特征带来最大的信息变化幅度,就选什么特征。
2.如果特征为连续值,则要对数据做离散化处理。根据业务需求离散成几类。
3.过程:遍历所有特征,取得信息增益最大的进行分类,然后再次遍历分出的几类,继续根据信息增益来进行下一步的分类。循环停止条件:所有结果都分类完或者每一类的数量小于阈值
4.基尼不纯度相对于信息熵更快一些
5.容易过拟合,需要前后剪枝,限制深度等方法
6.代码实践:泰坦尼克数据集的处理
根据乘客的性别,船舱号等预测乘客能否获救
见jupyternotebook
7.额外的笔记
当算法需要对值之间的距离进行计算时,标准化数据很重要
train_test split函数是随即划分的,也就是说同样的数据都能得出不同的结论。为了减少这种情况产生的误差,使用交叉验证

六.随机森林算法
1.既能分类又能回归
2.容易查看模型的输入特征的相对重要性(见10)
3.易于使用,参数比较少,参数代表的意义简单易懂
4.不会那么容易过拟合
5.对于不均匀的分布也能做出很好的预测
6.原理:运用集合算法构建很多个决策树,根据决策树的结果进行投票,得出结果。不仅利用了聚(集)合算法,在每次构建模型时不使用全部特征(避免某一部分特征影响过大,避免过拟合),而是随机使用一部分特征进行训练。
7.集合算法好处:有效地减少了过拟合,减少了噪声干扰。(每次抽取一部分数据构建模型,然后少数服从多数投票)
坏处:增加了计算量,计算时间比较长
8.参数:决策树个数,构建单棵决策树时用到的特征数量。
9.步骤:1.放回采样
2.采样特征
3.构建决策树
4.重复t次,构建t棵决策树
5.综合所有决策树的预测结果,成为随机森林的预测结果

10 .查看相对重要性的原理:通过查看该特征减少了该森林所有树多少不纯度。在训练后自动计算每个特征的重要性并标准化,使和等于一
11.参数:n_estimators:决策树的数量,越多,性能越好,但是越慢。
max_feature:每棵树能拥有的最多的特征数量
min_sample_leaf:决定叶子的数量
n_jobs:处理器的数量,-1代表没有限制
12.代码实战:见jupyter

第一部分到此结束~~~

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值