第七章.机器学习 Scikit-Learn—最小二乘法回归,岭回归,支持向量机,K_means聚类算法

news2025/1/15 16:52:17

第七章.机器学习 Scikit-Learn

7.1 Scikit-Learn简介

Scikit-Learn简称(SKlearn)是Python的第三方模块,是机器学习领域当中知名的Python模块之一,对常用的机器学习算法进行了封装,包括回归(Regression),降维(Dimensionality Reduction),分类(Classfication),聚类(Clustering)四大机器学习算法。

1.Scikit-Learn安装指令

1).pip工具安装

pip install -U scikit-learn

2).conda工具安装

conda install scikit-learn

2.线性模型

· 线性回归:利用数理统计中的回归分析,来确定两种或两种以上变量间,相互依赖的定量关系的一种统计分析与预测的方法.
· 一元线性回归分析:只包含一个自变量和一个因变量,且二者之间的关系可用一条直接近似表示。
· 多元线性回归分析:只包含两个或两个以上的自变,且自变量和因变量之间是线性关系。
· 在python中直接调用Scikit-Learn中的linear_model模块就可以实现线性回归分析,导入from sklearn import linear_model即可。

1).最小二乘法回归:(linear_model.LinearRegression)

·目的:通过最小化误差的平方和,使得预测值和真值无限接近。

·语法

linear_model.LinearRegression(fit_intercept=True,copy_X=True, n_jobs=None)

参数说明:
fit_intercept:是否需要计算截距,布尔类型,默认值为True
copy_X:是否复制X数据,默认值为True
n_jobs:CPU的工作核数,整数,默认值为1,-1:表示和CPU核数一致。

主要属性:
coef_:数组或形状,表示线性回归分析的回归系数
intercept:数组,表示截距

主要方法:
fit(X,y,sample_weight=None):拟合线性模型
predict(X):使用线性回归模型返回预测数据
score(X,y,sample_weight=None):返回预测的确定系数R^2

·示例

Excel中的数据:
在这里插入图片描述

代码:

import pandas as pd
import matplotlib as plt
from sklearn import linear_model

pd.set_option('display.unicode.east_asian_width', True)
df = pd.read_excel('F:\\Note\\清单.xlsx', sheet_name='Sheet10')

plt.rcParams['font.sans-serif'] = ['SimHei']  # 解决中文乱码
plt.rcParams['axes.unicode_minus'] = False  # 解决负号不显示的问题

area = pd.DataFrame(df['面积'])
price = pd.DataFrame(df['价格'])

# 最小二乘法回归
clf = linear_model.LinearRegression()

# 拟合线性模型
clf.fit(area, price)

# 回归系数
k = clf.coef_
print('回归系数=', k)

# 截距
b = clf.intercept_
print('截距=', b)

# 预测面积所对应的价格
area_pre = pd.DataFrame({'面积': df['预测面积']})

# 预测值
y = clf.predict(area_pre)
print('预测值=', y)

# 确定系数R^2
score = clf.score(area, price)
print('R^2=', score)

结果展示:
在这里插入图片描述

2).岭回归:(linear_model.Ridge)

·岭回归是在最小二乘法回归的基础上,加入了对回归系数L2范数的约束,岭回归是缩减法的一种,对回归系数的大小进行了限制。

·语法

linear_model.Ridge( alpha=1.0,fit_intercept=True,copy_X=True, max_iter=None,tol=1e-4,solver="auto",positive=False,random_state=None)

参数说明:
alpha:权重
fit_intercept:是否需要计算截距,布尔类型,默认值为True
copy_X:是否复制X数据,默认值为True
max_iter:最大迭代次数
tol:控制求解的精度,浮点数
solver:求解器,值为:auto(默认值),svd,cholesky,sparse_cg和lsqr。

·示例

Excel中的数据:
在这里插入图片描述

代码:

import pandas as pd
import matplotlib as plt
from sklearn import linear_model

pd.set_option('display.unicode.east_asian_width', True)
df = pd.read_excel('F:\\Note\\清单.xlsx', sheet_name='Sheet10')

plt.rcParams['font.sans-serif'] = ['SimHei']  # 解决中文乱码
plt.rcParams['axes.unicode_minus'] = False  # 解决负号不显示的问题

area = pd.DataFrame(df['面积'])
price = pd.DataFrame(df['价格'])

# 岭回归
clf = linear_model.Ridge()

# 拟合线性模型
clf.fit(area, price)

# 回归系数
k = clf.coef_
print('回归系数=', k)

# 截距
b = clf.intercept_
print('截距=', b)

# 预测面积所对应的价格
area_pre = pd.DataFrame({'面积': df['预测面积']})

# 预测值
y = clf.predict(area_pre)
print('预测值=', y)

# 确定系数R^2
score = clf.score(area, price)
print('R^2=', score)

结果展示:
在这里插入图片描述

3.支持向量机(sklearn.svm.linearSVR)

支持向量机(SVMs)可用于监督学习算法,主要包括分类,回归和异常检测,支持向量分类的方法可以被扩展用作解决回归问题,这个方法被称作支持向量回归。

1).语法:

sklearn.svm.linearSVR( epsilon=0.0,tol=1e-4,C=1.0,loss="epsilon_insensitive",fit_intercept=True,intercept_scaling=1.0,dual=True,verbose=0, random_state=None,max_iter=1000)

参数说明:
epsilon:float类型,默认值为0.1
tol:终止迭代的标准值,float类型,默认值为0.0001
C:罚项参数,该参数越大,使用的正则化越少,默认值为1.0
loss:损失函数(字符串类型),参数的两个选项:epsilon_insensitive:损失函数为Lε(标准SVR),默认值;squared_epsilon_insensitive:损失函数为Lε^2
fit_intercept:是否计算此模型的截距,默认值为True
intercept_scaling:float类型,intercept_scaling=True,实例向量x变为[x,self.intercept_scaling],相当于增加了一个特征,该特征将对所有实例都显示为常数值。此时截距变成intercept_scaling特征的权重wε,此时该特征值也参与了罚项的计算
dual:选择算法是解决对偶问题还是原始问题,dual=True,解决对偶问题
verbose:是否开启verbose输出,默认值为True
random_state:int类型,随机数生成器的种子,用于在混洗数据时时使用,如果是整数:随机数生成器使用的种子,如果是RandomState示例,则是随机数生成器。
max_iter:运行的最大迭代次数,默认值为1000
coef_:特征的权重,返回array数据类型
intercept_0:决策函数中的常量,返回array数据类型。

4.K_means聚类算法

·聚类类似于分类,不同的是聚类所要求划分的类是未知的,通过算法自动分类,k_means算法是一种无监督学习算法,目的是将相似的对象归到同一簇中,簇内的对象越相似,聚类的效果就越好。
·K_means聚类是给定一个数据点集合和需要的聚类数目K,K由用户指定,K均值算法将根据某个距离函数反复把数据分入到k的聚类中。

1).聚类数据生成器的语法:

sklearn.datasets.make_blobs(n_samples=100,n_features=2,centers=None,cluster_std=1.0,center_box=(-10.0, 10.0),shuffle=True,random_state=None, return_centers=False)

参数说明:
n_samples:待生成的样本总数
n_features:每个样本的特征数
centers:类别数
cluster_std:每个类别的方差。例如:生成两类数据,其中一类比另一类具有更大的方差,可以将cluster_std参数设置为[1.0,3.0]

2).K_means聚类的语法:

KMeans( n_clusters=8,init="k-means++",n_init="warn", max_iter=300,tol=1e-4,verbose=0,random_state=None,copy_x=True,algorithm="lloyd")

参数说明:
n_clusters:生成的聚类数,及产生的质心数,默认值为8.
init:参数值为k-means++,random或者传递一个数组向量,k-means++:用一种特殊方法选定初始质心从而加速迭代过程的收敛;random:随机从训练数据中选取初始质心;传递数组向量:应该是shape(n_clusters,n_clusters)的形式,并给出初始质心
n_init:用不同的质心初始化值运行算法的系数,默认值为10
max_iter:每执行一次K_means算法的最大迭代次数,默认值为300
tol:求解的精度,默认值为1e-4
verbose:冗长的模式
random_state:用于初始化质心的生成器,整型或者随机数组类型,整型:确定一个种子(seed),默认是NumPy的随机数生成器
copy_x:是否对源数据进行复制,copy_x=True,原始数据不会发生变化,copy_x=False,则会直接在原始数据上进行修改,并在函数返回值时将其还原,但是在计算过程中,有对数据均值的加减运算,所以数据返回后,原始数据同计算前的数据可能会有细小变化。
algorithm:表示K_means算法法则,参考值:auto(默认值),full或elkan

主要属性:
cluster_centers_:聚类中心坐标值,返回数组类型
labels_:每个样本数据所属的类别标记,返回数组类型
inertia_:每个样本数据距离他们各自最近簇的中心之和,返回数组类型

主要方法:
fit(X[,y]):计算K_means聚类
fit_predict(X[,y]):计算簇质心并给每个样本数据预测类别
predict(X):给每个样本估计最近的簇
score(X[,y]):计算聚类误差

3).示例

代码:

from sklearn.cluster import KMeans
from sklearn.datasets import make_blobs
import matplotlib.pyplot as plt


# 生成用于聚类的数据(500个样本,每个样本中含有两个特征)
x, y = make_blobs(n_samples=500, n_features=2, centers=3)

# 生成的聚类数,及产生的质心数
kmodel = KMeans(n_clusters=4, n_init='auto', random_state=9)

# 预测类别
y_pred = kmodel.fit_predict(x)
print('预测类别:', y_pred)

# 聚类中心坐标值
center_coor = kmodel.cluster_centers_
print('聚类中心坐标值', center_coor)

# 样本数据所属类别
category = kmodel.labels_
print('样本数据所属类别:', category)

plt.scatter(x[:, 0], x[:, 1], c=y_pred)
plt.show()

结果展示:

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/145425.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

地质灾害监测预警系统构成,功能,监测设备介绍

平升电子地质灾害监测预警系统,应用平升物联网遥测终端机、专业测量仪器和传感设备、预警广播设备、地质灾害监测预警平台,基于4G/5G/NB-IoT/LoRa/光纤/北斗卫星通信网络,实时在线监测地质灾害隐患点的地表位移、地表裂缝、深部位移、降雨量、…

Simulink-过零检测与代数环

过零检测过零检测即通过Simulink为模块注册若干过零函数,当模块变化趋势剧烈时,过零函数将会发生符号变化。每个采样点仿真结束时,Simulink检测过零函数是否有符号变化,如果检测到过零点,则Simulink将在前一个采样点和…

院内导航方案怎么样,低成本的智慧医院室内导航一站式解决方案

很多智慧医院的方案里都提到了院内导航,它俨然已经成为智慧医院套餐中的“招牌菜”,甚至被打上了“导航神器”的绰号,其中电子地图作为大家最喜闻乐见的高效应用形式,可以高效的为病患提供导医服务,实现院内导航功能&a…

集群多机ROS通信中间件:swarm_ros_bridge

最近写了一个无线网络环境下(比如WIFI)多机ROS通信的项目swarm_ros_bridge: https://gitee.com/shu-peixuan/swarm_ros_bridge A lightweight middle interface that enables specified ROS message transmission among swarm robots throu…

国内出海企业常见的跨境网络问题分析及解决方案

经济全球化趋势发展得如火如荼,越来越多的中国企业走出国门,兴起包括跨境电商、虚拟商品、游戏出海等新贸易形式。但在业务开拓过程中,由于远距离传输的特殊性,出海企业经常面临网络传输慢、不稳定、延迟、掉线等网络问题&#xf…

0基础如何开始学习计算机知识?

一、计算机的基本操作 计算机中只有文件和文件夹 计算机中,只有两样东西,文件和文件夹。 文件夹:本身不存储数据内容。文件夹是用来组织和管理文件的。 文件: 所有的txt文本文档,音乐,视频,图…

2022年国外LEAD收入情况

欢迎关注勤于奋每天12点准时更新国外LEAD相关技术这个收入情况,最喜欢关心,最喜欢看的人应该是新手和观望的人最想知道的,LEAD收入只要操作了,赚钱肯定是没问题,我一直这样说,而且我公众号叫勤于奋&#xf…

【Spring(四)】万字详解bean的实例化

文章目录前言1.bean实例化1.1 bean的基础配置1.2 bean的实例化-构造方法1.3 bean的实例化-静态工厂1.4 bean的实例化-实例工厂与FactoryBean总结前言 在上篇文章,我们已经完成了入门案例的学习,在入门案例中,我们讲了三块东西,首先…

《Kotlin核心编程》笔记:函数和Lambda表达式

高阶函数和lambda表达式 函数式语言⼀个典型的特征就在于函数是头等公民——我们不仅可以像类⼀样在顶层直接定义⼀个函数,也可以在⼀个函数内部定义⼀个局部函数,如下所示:所谓的高阶函数,你可以把它理解成“ 以其他函数作为参数…

Debian10,docker单机安装ThingsBoard-3.3.2

1.编译项目源码 源代码编译ThingsBoard-3.3.2 2.环境准备 修改ssh登录配置 sudo vi /etc/ssh/sshd_config 打开密码登录和root用户登录3.安装docker 更新apt sudo apt update安装必备软件 sudo apt install apt-transport-https ca-certificates curl gnupg2 software-p…

SpringBoot异步方法(官方案例)

在线文档项目结构 1.源码克隆:git clone https://github.com/spring-guides/gs-async-method.git 2.包含两个项目initial和complete,initial可以根据文档练习完善,complete是完整项目 3.功能描述:构建查找服务,异步查询…

Linux搭建Docker版FTP,命令与Dockerfile两种方式以及容器编码解决

Linux搭建Docker版FTP,命令与Dockerfile两种方式以及容器编码解决一、Linux搭建Docker版FTP二、修改 Docker 容器内部 locale 系统编码最终待实现效果,这个方式容器内部编码并未永久改变三、编写Dockerfile方式加载带UTF-8编码环境的镜像3.1Dockerfile构…

【LINUX权限】

目录:前言一、shell二、权限(一)文件权限(二)权限相关指令chmod(修改权限)su 、sudo(提权)root提权chown 、chgrpumask(掩码)file(三&…

性能测试工具 Lmbench 的使用方法以及解析运行结果

1. Lmbench 简介 Lmbench 是一款简易可以移植的内存测试工具,其主要功能有,带宽测评(读取缓存文件、拷贝内存、读/写内存、管道、TCP),延时测评(上下文切换、网络、文件系统的建立和删除、进程创建、信号处…

MYSQL中的14个实用的功能

1.group_concat 在我们平常的工作中,使用group by进行分组的场景,是非常多的。 比如想统计出用户表中,名称不同的用户的具体名称有哪些? 具体sql如下: select name from `user` group by name; 但如果想把name相同的code拼接在一起,放到另外一列中该怎么办呢? 答:…

Genesis一款基于Domino的app store应用超市

大家好,才是真的好。 众所周知,App Store是苹果iOS系统生态成功的关键因素。Domino作为一款企业应用平台,很多年前,就有人提出要创建Domino平台上的App Store。 其实比IOS早很多年前就有类似的应用管理,早在2000年的…

代码随想录之回溯第一课

要领:类型题目,用具体的一个例子来记忆,就够了,印象更加深刻。 一个题目,感觉理解不深刻,不透彻,不清晰,不熟练,就是不达标。 怎么做? 每天回顾复习看一次&am…

DD-1/50 12.5-50mA【接地继电器】

系列型号: DD-1/40接地继电器 DD-1/50接地继电器 DD-1/60接地继电器 一、 用途及工作原理 DD-1型接地继电器为瞬时动作的过电流继电器,用作小电流接地电力系统高电压三相交流发电机和电动机的接地零序过电流保护。继电器线圈接零序电流互感器(电缆式、…

电脑重装系统后分辨率不对应该怎么调

越来越多的小伙伴使用小白一键重装系统给自己的电脑安装上了win10系统,但是有部分小伙伴发现安装完win10系统之后,屏幕分辨率也无法进行调整,呈灰色状态。接下来小编就给大家详细的介绍一下小白一键重装系统分辨率不对怎么调的教程。 工具/原…

【Django】(一)基础知识

文章目录一.安装二.创建项目三.项目介绍四.APP的创建五.小案例六 模板和静态文件模板静态文件7.模板语法7.1 变量7.2列表7.3 字典7.4 过滤器7.5 if/else7.6 for标签7.7 ifequal和ifnotequal7.8注释7.9csrf_token8.模板继承8.1父模板8.2 子模板9.请求和响应10.数据库10.1安装第三…