抽查是一种发现哪种算法在机器学习问题上表现良好的方法。

无法事先知道哪种算法是最适合的,必须尝试多种方法并将注意力集中在那些证明最有效果的方法上。
…………………………………………………

概述

本文将研究7种分类算法,可以对数据集进行现场检查。

4种线性机器学习算法:

  • 线性回归
  • 岭回归
  • LASSO线性回归
  • 弹性净回归

3种非线性机器学习算法:

  • K最临近
  • 分类和回归树
  • 支持向量机

使用10层交叉验证的测试工具来演示如何现场检查每种机器学习算法,并使用均方误差度量来指示算法性能。

注意,均方误差值取反(负)。这是所使用的cross_val_score()函数的一个习惯,该函数要求所有算法指标均按升序排序(值越大越好)。

不涉及每种算法的API或参数化。

线性机器学习算法

如何使用scikit-learn在Python中使用4种不同的线性机器学习算法进行回归的示例

1.线性回归

线性回归假设输入变量具有高斯分布。还假定输入变量与输出变量相关,并且它们彼此之间不高度相关(称为共线性的问题)。

可以使用LinearRegression类构造线性回归模型。

# Linear Regression
import pandas
from sklearn import model_selection
from sklearn.linear_model import LinearRegression
url = "https://raw.githubusercontent.com/jbrownlee/Datasets/master/housing.data"
names = ['CRIM', 'ZN', 'INDUS', 'CHAS', 'NOX', 'RM', 'AGE', 'DIS', 'RAD', 'TAX', 'PTRATIO', 'B', 'LSTAT', 'MEDV']
dataframe = pandas.read_csv(url, delim_whitespace=True, names=names)
array = dataframe.values
X = array[:,0:13]
Y = array[:,13]
seed = 7
kfold = model_selection.KFold(n_splits=10, random_state=seed)
model = LinearRegression()
scoring = 'neg_mean_squared_error'
results = model_selection.cross_val_score(model, X, Y, cv=kfold, scoring=scoring)
print(results.mean())

注意:由于算法或评估程序的随机性,或者数值精度不同,结果可能会有所不同。考虑运行该示例几次并比较平均结果。

运行该示例可提供均方误差的估计值。

更新:mean_squared_error在版本0.18中重命名为neg_mean_squared_error,并将在0.20中删除

-34.7052559445

2.岭回归

Ridge回归是线性回归的扩展,其中修改了损失函数以最小化作为系数值的平方和值(也称为l2-范数)测得的模型的复杂性。

可以使用Ridge类构造一个Ridge回归模型 。

# Ridge Regression
import pandas
from sklearn import model_selection
from sklearn.linear_model import Ridge
url = "https://raw.githubusercontent.com/jbrownlee/Datasets/master/housing.data"
names = ['CRIM', 'ZN', 'INDUS', 'CHAS', 'NOX', 'RM', 'AGE', 'DIS', 'RAD', 'TAX', 'PTRATIO', 'B', 'LSTAT', 'MEDV']
dataframe = pandas.read_csv(url, delim_whitespace=True, names=names)
array = dataframe.values
X = array[:,0:13]
Y = array[:,13]
seed = 7
kfold = model_selection.KFold(n_splits=10, random_state=seed)
model = Ridge()
scoring = 'neg_mean_squared_error'
results = model_selection.cross_val_score(model, X, Y, cv=kfold, scoring=scoring)
print(results.mean())

注意:由于算法或评估程序的随机性,或者数值精度不同,结果可能会有所不同。考虑运行该示例几次并比较平均结果。

运行该示例可提供均方误差的估计值。

-34.0782462093

3. LASSO回归

最小绝对收缩和选择算子(或简称LASSO)是对线性回归(如岭回归)的修改,其中修改了损失函数以最小化作为系数值的总绝对值(也称为系数)的模型的复杂性l1-范数)。

可以使用Lasso类构造LASSO模型。

# Lasso Regression
import pandas
from sklearn import model_selection
from sklearn.linear_model import Lasso
url = "https://raw.githubusercontent.com/jbrownlee/Datasets/master/housing.data"
names = ['CRIM', 'ZN', 'INDUS', 'CHAS', 'NOX', 'RM', 'AGE', 'DIS', 'RAD', 'TAX', 'PTRATIO', 'B', 'LSTAT', 'MEDV']
dataframe = pandas.read_csv(url, delim_whitespace=True, names=names)
array = dataframe.values
X = array[:,0:13]
Y = array[:,13]
seed = 7
kfold = model_selection.KFold(n_splits=10, random_state=seed)
model = Lasso()
scoring = 'neg_mean_squared_error'
results = model_selection.cross_val_score(model, X, Y, cv=kfold, scoring=scoring)
print(results.mean())

注意:由于算法或评估程序的随机性,或者数值精度不同,结果可能会有所不同。考虑运行该示例几次并比较平均结果。

运行该示例可提供均方误差的估计值。

-34.4640845883

4. ElasticNet回归

ElasticNet是正则化回归的一种形式,结合了Ridge回归和LASSO回归的属性。它试图通过使用l2范数(平方和值的平方)和l1范数(绝对系数的总和)对模型进行惩罚,以最小化回归模型的复杂度(幅度和回归系数的数量)。

可以使用ElasticNet类构造一个 ElasticNet模型。

# ElasticNet Regression
import pandas
from sklearn import model_selection
from sklearn.linear_model import ElasticNet
url = "https://raw.githubusercontent.com/jbrownlee/Datasets/master/housing.data"
names = ['CRIM', 'ZN', 'INDUS', 'CHAS', 'NOX', 'RM', 'AGE', 'DIS', 'RAD', 'TAX', 'PTRATIO', 'B', 'LSTAT', 'MEDV']
dataframe = pandas.read_csv(url, delim_whitespace=True, names=names)
array = dataframe.values
X = array[:,0:13]
Y = array[:,13]
seed = 7
kfold = model_selection.KFold(n_splits=10, random_state=seed)
model = ElasticNet()
scoring = 'neg_mean_squared_error'
results = model_selection.cross_val_score(model, X, Y, cv=kfold, scoring=scoring)
print(results.mean())

注意:由于算法或评估程序的随机性,或者数值精度不同,结果可能会有所不同。考虑运行该示例几次并比较平均结果。

运行该示例可提供均方误差的估计值。

-31.1645737142

非线性机器学习算法

提供了有关如何使用scikit-learn在Python中使用3种不同的非线性机器学习算法进行回归的示例

1.K最近邻(或KNN)

K最近邻(或KNN)在训练数据集中找到新数据实例的K个最相似实例。从K个邻居中,将平均值或中位数输出变量作为预测。值得注意的是使用的距离度量( 度量参数)的明可夫斯基距离默认情况下使用,这既是的欧几里得距离(当所有输入具有相同规模上使用)和曼哈顿距离的概括(用于当所述输入变量的标度不同)。

可以使用KNeighborsRegressor类构造用于回归的KNN模型

# KNN Regression
import pandas
from sklearn import model_selection
from sklearn.neighbors import KNeighborsRegressor
url = "https://raw.githubusercontent.com/jbrownlee/Datasets/master/housing.data"
names = ['CRIM', 'ZN', 'INDUS', 'CHAS', 'NOX', 'RM', 'AGE', 'DIS', 'RAD', 'TAX', 'PTRATIO', 'B', 'LSTAT', 'MEDV']
dataframe = pandas.read_csv(url, delim_whitespace=True, names=names)
array = dataframe.values
X = array[:,0:13]
Y = array[:,13]
seed = 7
kfold = model_selection.KFold(n_splits=10, random_state=seed)
model = KNeighborsRegressor()
scoring = 'neg_mean_squared_error'
results = model_selection.cross_val_score(model, X, Y, cv=kfold, scoring=scoring)
print(results.mean())

注意:由于算法或评估程序的随机性,或者数值精度不同,结果可能会有所不同。考虑运行该示例几次并比较平均结果。

运行该示例可提供均方误差的估计值。

-107.28683898

2.分类和回归树

决策树或分类树和回归树(众所周知的CART)使用训练数据来选择最佳点来拆分数据,以最小化成本指标。回归决策树的默认成本度量是标准参数中指定的均方误差。

可以使用DecisionTreeRegressor类创建用于回归的CART模型 。

# Decision Tree Regression
import pandas
from sklearn import model_selection
from sklearn.tree import DecisionTreeRegressor
url = "https://raw.githubusercontent.com/jbrownlee/Datasets/master/housing.data"
names = ['CRIM', 'ZN', 'INDUS', 'CHAS', 'NOX', 'RM', 'AGE', 'DIS', 'RAD', 'TAX', 'PTRATIO', 'B', 'LSTAT', 'MEDV']
dataframe = pandas.read_csv(url, delim_whitespace=True, names=names)
array = dataframe.values
X = array[:,0:13]
Y = array[:,13]
seed = 7
kfold = model_selection.KFold(n_splits=10, random_state=seed)
model = DecisionTreeRegressor()
scoring = 'neg_mean_squared_error'
results = model_selection.cross_val_score(model, X, Y, cv=kfold, scoring=scoring)
print(results.mean())

注意:由于算法或评估程序的随机性,或者数值精度不同,结果可能会有所不同。考虑运行该示例几次并比较平均结果。

运行该示例可提供均方误差的估计值。

-35.4906027451

3.支持向量机

支持向量机(SVM)用于二进制分类。该技术已扩展到称为支持向量回归(SVR)的预测实值问题。类似于分类示例,SVR基于LIBSVM库构建。

可以使用SVR类创建用于回归的SVM模型。

# SVM Regression
import pandas
from sklearn import model_selection
from sklearn.svm import SVR
url = "https://raw.githubusercontent.com/jbrownlee/Datasets/master/housing.data"
names = ['CRIM', 'ZN', 'INDUS', 'CHAS', 'NOX', 'RM', 'AGE', 'DIS', 'RAD', 'TAX', 'PTRATIO', 'B', 'LSTAT', 'MEDV']
dataframe = pandas.read_csv(url, delim_whitespace=True, names=names)
array = dataframe.values
X = array[:,0:13]
Y = array[:,13]
seed = 7
kfold = model_selection.KFold(n_splits=10, random_state=seed)
model = SVR()
scoring = 'neg_mean_squared_error'
results = model_selection.cross_val_score(model, X, Y, cv=kfold, scoring=scoring)
print(results.mean())

注意:由于算法或评估程序的随机性,或者数值精度不同,结果可能会有所不同。考虑运行该示例几次并比较平均结果。

运行该示例可提供均方误差的估计值。

-91.0478243332

选取最优模型--scikit-learn的Python中抽查回归机器学习算法相关推荐

  1. [转载]Scikit Learn: 在python中机器学习

    原址:http://my.oschina.net/u/175377/blog/84420 目录[-] Scikit Learn: 在python中机器学习 载入示例数据 一个改变数据集大小的示例:数码 ...

  2. Scikit Learn: 在python中机器学习

    Warning 警告:有些没能理解的句子,我以自己的理解意译. 翻译自:Scikit Learn:Machine Learning in Python 作者: Fabian Pedregosa, Ga ...

  3. python 线性回归模型_如何在Python中建立和训练线性和逻辑回归ML模型

    python 线性回归模型 Linear regression and logistic regression are two of the most popular machine learning ...

  4. Python中完整的机器学习数据科学课程

    学习每个机器学习模型背后的数学,然后用Python实现它 你会学到: 开发机器学习模型 创建机器学习模型的模板 学习每个机器学习模型背后的数学 要求: Python或任何编程语言的基础 时长:8h 1 ...

  5. [转载] Python中的Phyllotaxis模式| 算法植物学的一个单位

    参考链接: Python中的Phyllotaxis模式| 算法植物学的单位 简介| 叶底   Phyllotaxis / phyllotaxy是植物茎上叶子的排列,Phyllotactic螺旋形成自然 ...

  6. python计算均方根误差_如何在Python中创建线性回归机器学习模型?「入门篇」

    线性回归和逻辑回归是当今很受欢迎的两种机器学习模型. 本文将教你如何使用 scikit-learn 库在Python中创建.训练和测试你的第一个线性.逻辑回归机器学习模型,本文适合大部分的新人小白. ...

  7. 如何在Python中建立回归模型

    数据科学 (DATA SCIENCE) If you are an aspiring data scientist or a veteran data scientist, this article ...

  8. python保存模型_如何在Python中保存ARIMA时间序列预测模型

    自回归移动平均模型(ARIMA)是一种常用于时间序列分析和预测的线性模型. statsmodels库提供了Python中使用ARIMA的实现.ARIMA模型可以保存到文件中,以便以后对新数据进行预测. ...

  9. 小姐姐带你一起学:如何用Python实现7种机器学习算法(附代码)

    编译 | 林椿眄 出品 | AI科技大本营(公众号ID:rgznai100) [AI科技大本营导读]Python 被称为是最接近 AI 的语言.最近一位名叫Anna-Lena Popkes的小姐姐在G ...

最新文章

  1. 【Qt】Qt样式表总结(三):QObject 属性
  2. 软件测试面试之登录界面
  3. Java面向对象(一)面向对象简介和初步 了解
  4. leetcode 169. 多数元素(不同数相消解法)
  5. 大厂JVM GC面试题
  6. luogu4389 付公主的背包
  7. 纯粹,极致!他用两个词阐释了UCloud
  8. redis源码阅读--hashTable
  9. 斐波那契数列的Python实现
  10. Objective-c的点符号(.)的奇怪之处
  11. 基于JAVA+SSM+MYSQL的菜谱学习平台
  12. vue 启动只显示error_Vue-声明式渲染
  13. 轻松解决vscode官网下载慢问题
  14. Halcon仿射变换图片(旋转、缩放、平移)
  15. C/C++音乐播放(亲测有效)
  16. 用户行为监控(Piwik)
  17. php选课实验成品_PHP基于B/S模式下的学生选课管理系统、源码分享
  18. Android 关于佳博和汉印蓝牙热敏打印机开发
  19. 类和对象的定义和关系
  20. 小米 红米Note(联通3G版)解BL锁教程 申请BootLoader解锁教程

热门文章

  1. typedef 的使用方法详解、goto语句的使用方法。
  2. 天热则心躁之,或曰,心静自然凉乎
  3. (附源码)计算机毕业设计ssm党史知识竞赛系统
  4. java面向对象基础练习1(坐标点移动)
  5. Git-用 cherry-pick 挑好看的小樱桃
  6. 【笔记】lua - 协程
  7. java与模式pdf 闫宏_Java设计模式及实践.pdf下载
  8. 全球 AI 人工智能报告 —— 来自乌镇互联网大会
  9. 第三章 LD3320语音识别模块的使用
  10. PMP——项目组织结构