小说网站建站程序,外贸自建站费用,ftp 转 wordpress,深圳网站建设哪家公司便宜前言#xff1a;Hello大家好#xff0c;我是小哥谈。Scikit-Learn#xff08;简称Sklearn#xff09;是Python 的第三方模块#xff0c;它是机器学习领域当中知名的Python 模块之一#xff0c;它对常用的机器学习算法进行了封装#xff0c;包括回归#xff08;Regressi… 前言Hello大家好我是小哥谈。Scikit-Learn简称Sklearn是Python 的第三方模块它是机器学习领域当中知名的Python 模块之一它对常用的机器学习算法进行了封装包括回归Regression、降维Dimensionality Reduction、分类Classfication和聚类Clustering四大机器学习算法。本节课就简单介绍下Scikit-Learn的基本概念、应用场景、安装方法和应用案例~ 前期回顾 第2篇 机器学习基础 —1机器学习概念和方式 第2篇 机器学习基础 —2分类和回归 目录
1.基本概念
2.安装方法
3.应用场景
4.最小二乘法回归
5.支持向量机 1.基本概念
Scikit-Learn是一个Python机器学习库它提供了各种各样的机器学习算法和工具包括分类、回归、聚类、降维等等。它是一个非常流行的机器学习库因为它易于使用、功能强大、文档齐全并且有一个庞大的社区支持。Scikit-Learn还提供了许多实用工具如数据预处理、特征提取和模型评估等这些工具可以帮助你更好地理解和分析数据。
Scikit-Learn的发展始于2007年由David Cournapeau在Google Summer of Code项目中启动。项目后续得到了许多开发者的贡献包括INRIA法国国家信息与自动化研究所Waikato大学和其他机构。Scikit-Learn的发展历程中不断地增加新的功能和算法提高了性能和稳定性成为了机器学习领域中最受欢迎的库之一。
Scikit-Learn 具有以下特点
简单高效的数据挖掘和数据分析工具。让每个人能够在复杂环境中重复使用。Scikit-Learn是Scipy模块的扩展是建立在NumPy 和Matplotlib模块的基础上。利用这几大模块的优势可以大大提高机器学习的效率。开源采用BSD 协议可用于商业。
Scikit-Learn的版本迭代情况
Scikit-Learn 0.1 - 2007年发布的第一个版本。Scikit-Learn 0.2 - 2008年发布增加了更多的分类和聚类算法。Scikit-Learn 0.3 - 2009年发布增加了更多的特征选择和数据预处理工具。Scikit-Learn 0.4 - 2010年发布增加了更多的回归算法和交叉验证工具。Scikit-Learn 0.5 - 2011年发布增加了更多的聚类算法和特征选择工具。Scikit-Learn 0.6 - 2012年发布增加了更多的分类算法和特征选择工具。Scikit-Learn 0.7 - 2013年发布增加了更多的回归算法和特征选择工具。Scikit-Learn 0.8 - 2014年发布增加了更多的聚类算法和特征选择工具。Scikit-Learn 0.9 - 2015年发布增加了更多的分类算法和特征选择工具。Scikit-Learn 0.10 - 2016年发布增加了更多的回归算法和特征选择工具。Scikit-Learn 0.11 - 2017年发布增加了更多的聚类算法和特征选择工具。Scikit-Learn 0.12 - 2018年发布增加了更多的分类算法和特征选择工具。Scikit-Learn 0.13 - 2019年发布增加了更多的回归算法和特征选择工具。Scikit-Learn 0.22 - 2019年发布增加了更多的特征选择和数据预处理工具以及更好的模型选择和评估工具。Scikit-Learn 0.23 - 2020年发布增加了更多的特征选择和数据预处理工具以及更好的模型选择和评估工具还增加了对Python 3.8的支持。 2.安装方法
Scikit-Learn 的安装要求如下
Python版本高于2.7。NumPy 版本高于1.8.2。SciPy高于0.13.3。
如果已经安装了NumPy 和Scipy那么安装Scikit-Learn 最简单的方法是使用pip 工具安装命令如下
pip install -U scikit-learn
或者使用conda命令如下
conda install scikit-learn
还可以在PyCharm开发环境中安装。运行PyCharm选择File → Settings 菜单项打开“Settings”窗口选择“Project Interpreter”选项然后单击添加按钮打开“Available Packages”窗口在搜索文本框中输入需要添加的模块名称例如“scikit-learn”然后在列表中选择需要安装的模块。 注意尽量选择安装0.21.2 版本否则运行程序时可能会出现因为模块版本不适合而导致程序出现错误提示“找不到指定的模块”。 3.应用场景
Scikit-Learn是一个广泛使用的Python机器学习库它提供了许多用于分类、回归、聚类、数据降维、模型选择和数据预处理等任务的工具和算法。因此Scikit-Learn的应用场景非常广泛包括但不限于以下几个方面
金融领域用于信用评估、欺诈检测、股票预测等。医疗领域用于疾病诊断、药物研发、基因分析等。自然语言处理用于文本分类、情感分析、机器翻译等。图像处理用于图像分类、目标检测、人脸识别等。工业制造用于质量控制、故障诊断、预测维护等。推荐系统用于个性化推荐、广告投放等。
等等......
根据以上所述对于Scikit-Learn的应用主要基于以下六个方面
1分类
解释标识对象所属的类别
举例垃圾邮件检测图像识别等
2回归
解释预测与对象关联的连续值属性
举例药物反应股票价格等
3聚类
解释自动将相似对象归为一组
举例客户细分分组实验成果等
4降维
解释减少要考虑的随机变量的数量
举例可视化提高效率等
5模型选择
解释比较验证和选择参数和模型。
举例通过参数调整改进精度
6预处理
解释特征提取和归一化
举例转换输入数据例如文本以供机器学习算法使用等。 4.最小二乘法回归
首先了解一下线性回归分析。线性回归是利用数理统计中的回归分析来确定两种或两种以上变量间相互依赖的定量关系的一种统计分析与预测的方法应用十分广泛。在线性回归分析中只包括一个自变量和一个因变量且二者的关系可用一条直线近似表示这种回归分析称为一元线性回归分析。如果线性回归分析中包括两个或两个以上的自变量且因变量和自变量之间是线性关系则称为多元线性回归分析。在Python中无需理会烦琐的线性回归求解数学过程直接使用Scikit-Learn中的linear_model模块就可以实现线性回归分析。linear_model 模块中提供了很多线性模型包括最小二乘法回归、岭回归、Lasso、贝叶斯回归等。本节课主要介绍最小二乘法回归。
首先导入linear_model 模块程序代码如下
from sklearn import linear_model
导入linear_model 模块后在程序中就可以使用相关函数实现线性回归分析。
线性回归是数据挖掘中的基础算法之一线性回归的思想其实就是解一组方程得到回归系数。不过在出现误差项之后方程的解法就存在了改变一般使用最小二乘法进行计算所谓“二乘”就是平方的意思最小二乘法也称为最小平方和其目的是通过最小化误差的平方和使得预测值与真值无限接近。linear_model 模块中的LinearRegression 函数用于实现最小二乘法回归。LinearRegression 函数拟合一个带有回归系数的线性模型使得真实数据和预测数据估计值之间的残差平方和最小与真实数据无限接近。
LinearRegression 函数的语法如下
linear_model.LinearRegression(fit_interceptTrue,normalizeFalse,copy_XTrue,n_jobsNone)
参数说明
fit_intercept布尔型值是否需要计算截距默认值为True。
normalize布尔型值是否需要标准化默认值为False和参数fit_intercept有关。当fit_intercept参数值为False时将忽略该参数当fit_intercept 参数值为True 时则回归前对回归量X进行归一化处理取均值相减再除以L2 范数L2 范数是指向量各元素的平方和然后开方。
copy_X 布尔型值选择是否复制X 数据默认值True如果为False则覆盖X 数据。
n_jobs整型代表CPU 工作效率的核数默认值1-1 表示跟CPU 的核数一致。
主要属性
coef_数组或形状表示线性回归分析的回归系数。
intercept_数组表示截距。
主要方法
fit(X,y,sample_weightNone)拟合线性模型。
predict(X)使用线性模型返回预测数据。
score(X,y,sample_weightNone)返回预测的确定系数R^2。LinearRegression 函数调用fit 方法来拟合数组X、y并且将线性模型的回归系数存储在其成员变量的coef_ 属性中。
案例快速预测房价
实现智能预测房价假设某地的房屋面积和价格关系如下表所示下面使用LinearRegression 函数预测面积为170 平方米的房屋的单价。
面积价格56780010490001569200200100002501100030012000
代码
from sklearn import linear_model
import numpy as npxnp.array([[1,56],[2,104],[3,156],[4,200],[5,250],[6,300]])
ynp.array([7800,9000,9200,10000,11000,12000])
clf linear_model.LinearRegression()
clf.fit (x,y) #拟合线性模型
kclf.coef_ #回归系数
bclf.intercept_ #截距
x0np.array([[7,170]])#通过给定的x0预测y0y0截距X值*回归系数
y0clf.predict(x0) #预测值
print(回归系数,k)
print(截距,b)
print(预测值,y0)
运行程序输出结果
回归系数 [1853.37423313 -21.7791411 ]
截距 7215.950920245397
预测值 [16487.11656442] 5.支持向量机
支持向量机SVMs可用于监督学习算法主要包括分类、回归和异常检测。支持向量分类的方法可以被扩展用作解决回归问题这个方法被称作支持向量回归。本节介绍支持向量回归函数――LinearSVR函数。LinearSVR 函数是一个支持向量回归的函数支持向量回归不仅适用于线性模型还可以用于对数据和特征之间的非线性关系。避免多重共线性问题从而提高泛化性能解决高维问题语法如下
sklearn.svm.LinearSVRepsilon 0.0tol 0.0001C 1.0loss epsilon_insensitivefit_intercept Trueintercept_scaling 1.0dual Trueverbose 0random_state Nonemax_iter 1000
参数说明
epsilonfloat类型值默认值为0.1。
tolfloat类型值终止迭代的标准值默认值为0.0001。
Cfloat类型值罚项参数该参数越大使用的正则化越少默认值为1.0。
loss string类型值损失函数该参数有两种选项
epsilon_insensitive损失函数为L 标准SVR。
squared_epsilon_insensitive损失函数为L 默认值为epsilon_insensitive。
fit_interceptboolean 类型值是否计算此模型的截距。如果设置为False则不会在计算中使用截距即数据预计已经居中。默认值为True。
intercept_scalingfloat 类型值当fit_intercept 为True 时实例向量x 变为[xself.intercept_scaling]。此时相当于添加了一个特征该特征将对所有实例都显示为常数值。此时截距变成intercept_scaling特征的权重w 。此时该特征值也参与了罚项的计算。
dualboolean 类型值选择算法以解决对偶或原始优化问题。设置为True 时将解决对偶问题设置为False 时解决原始问题默认值为True。
verboseint类型值是否开启verbose输出默认值为True。
random_stateint 类型值随机数生成器的种子用于在混洗数据时使用。如果是整数则是随机数生成器使用的种子如果是RandomState 实例则是随机数生成器。
max_iterint类型值要运行的最大迭代次数。默认值为1000。
coef_赋予特征的权重返回array数据类型。
intercept_0决策函数中的常量返回array数据类型。
案例预测“波士顿”的房价
通过Scikit-Learn 自带的数据集“波士顿房价”实现房价预测程序代码如下
代码
from sklearn.svm import LinearSVR #导入线性回归类
from sklearn.datasets import load_boston #导入加载波士顿的数据集
from pandas import DataFrame #导入DataFrameboston load_boston() #创建加载波士顿的数据对象#将波士顿的房价数据创建为DataFrame对象
df DataFrame(boston.data, columnsboston.feature_names)
df.insert(0,target,boston.target) #将价格添加至DataFrame对象中
data_mean df.mean() #获取平均值
data_std df.std() #获取标准偏差
data_train (df - data_mean) / data_std #数据标准化
x_train data_train[boston.feature_names].values #特征数据
y_train data_train[target].values #目标数据
linearsvr LinearSVR(C0.1) #创建LinearSVR对象
linearsvr.fit(x_train, y_train) #训练模型#预测并还原结果
x ((df[boston.feature_names] - data_mean[boston.feature_names]) / data_std[boston.feature_names]).values#添加预测房价的信息列
df[uy_pred] linearsvr.predict(x) * data_std[target] data_mean[target]
print(df[[target, y_pred]].head()) #输出真实价格与预测价格
运行程序输出结果 target y_pred
0 24.0 28.412710
1 21.6 23.864795
2 34.7 29.944414
3 33.4 28.322685
4 36.2 28.136243