当前位置: 首页 > news >正文

易百教程人工智能python修正-人工智能监督学习(回归)

回归是最重要的统计和机器学习工具之一。 我们认为机器学习的旅程从回归开始并不是错的。 它可以被定义为使我们能够根据数据做出决定的参数化技术,或者换言之,允许通过学习输入和输出变量之间的关系来基于数据做出预测。 这里,依赖于输入变量的输出变量是连续值的实数。 在回归中,输入和输出变量之间的关系很重要,它有助于我们理解输出变量的值随输入变量的变化而变化。 回归常用于预测价格,经济,变化等。

在Python中构建回归器

在本节中,我们将学习如何构建单一以及多变量回归器。

线性回归器/单变量回归器

让我们重点介绍一些必需的软件包 -

import numpy as np
from sklearn import linear_model
import sklearn.metrics as sm
import matplotlib.pyplot as plt

 

现在,我们需要提供输入数据,并将数据保存在名为linear.txt的文件中。

input = 'F:\\notebook\\linear.txt'
使用 np.loadtxt函数加载这些数据。
input_data = np.loadtxt(input, delimiter=',')
X, y = input_data[:, :-1], input_data[:, -1]

 

下一步将是培训模型。下面给出培训和测试样本。

training_samples = int(0.6 * len(X))
testing_samples = len(X) - num_training

X_train, y_train = X[:training_samples], y[:training_samples]

X_test, y_test = X[training_samples:], y[training_samples:]

 

现在,我们需要创建一个线性回归器对象。

reg_linear = linear_model.LinearRegression()

 

用训练样本训练对象。
reg_linear.fit(X_train, y_train)

 

下面使用测试数据做预测。
y_test_pred = reg_linear.predict(X_test)

 

现在绘制并可视化数据。

plt.scatter(X_test, y_test, color = 'red')
plt.plot(X_test, y_test_pred, color = 'black', linewidth = 2)
plt.xticks(())
plt.yticks(())
plt.show()

 

执行上面示例代码,输出以下结果 -

现在,我们可以计算线性回归的性能如下 -

print("Performance of Linear regressor:")
print("Mean absolute error =", round(sm.mean_absolute_error(y_test, y_test_pred), 2))
print("Mean squared error =", round(sm.mean_squared_error(y_test, y_test_pred), 2))
print("Median absolute error =", round(sm.median_absolute_error(y_test, y_test_pred), 2))
print("Explain variance score =", round(sm.explained_variance_score(y_test, y_test_pred),
2))
print("R2 score =", round(sm.r2_score(y_test, y_test_pred), 2))

 

线性回归器的性能输出结果如下 -
Mean absolute error = 1.78
Mean squared error = 3.89
Median absolute error = 2.01
Explain variance score = -0.09
R2 score = -0.09
 

在上面的代码中,我们使用了这些小数据源。 如果想要处理一些大的数据集,那么可以使用sklearn.dataset来导入更大的数据集。

2,4.82.9,4.72.5,53.2,5.56,57.6,43.2,0.92.9,1.92.4,
3.50.5,3.41,40.9,5.91.2,2.583.2,5.65.1,1.54.5,
1.22.3,6.32.1,2.8
 

多变量回归
首先,让我们导入一些必需的软件包 -

import numpy as np
from sklearn import linear_model
import sklearn.metrics as sm
import matplotlib.pyplot as plt
from sklearn.preprocessing import PolynomialFeatures

 

现在,需要提供输入数据,并将数据保存在名为linear.txt的文件中。

input = 'F:\\notebook\\Mul_linear.txt'

我们将通过使用np.loadtxt函数加载这些数据。

input_data = np.loadtxt(input, delimiter=',')
X, y = input_data[:, :-1], input_data[:, -1]

下一步将是训练模型; 会提供训练和测试样品数据。

training_samples = int(0.6 * len(X))
testing_samples = len(X) - num_training

X_train, y_train = X[:training_samples], y[:training_samples]

X_test, y_test = X[training_samples:], y[training_samples:]

 

现在,我们需要创建一个线性回归器对象。

reg_linear_mul = linear_model.LinearRegression()

 

用训练样本训练对象。
reg_linear_mul.fit(X_train, y_train)

 

现在,最后需要用测试数据做预测。

y_test_pred = reg_linear_mul.predict(X_test)

print("Performance of Linear regressor:")
print("Mean absolute error =", round(sm.mean_absolute_error(y_test, y_test_pred), 2))
print("Mean squared error =", round(sm.mean_squared_error(y_test, y_test_pred), 2))
print("Median absolute error =", round(sm.median_absolute_error(y_test, y_test_pred), 2))
print("Explain variance score =", round(sm.explained_variance_score(y_test, y_test_pred), 2))
print("R2 score =", round(sm.r2_score(y_test, y_test_pred), 2))

线性回归器的性能输出结果如下 -

Mean absolute error = 0.6
Mean squared error = 0.65 Median absolute error = 0.41 Explain variance score = 0.34 R2 score = 0.33 
 

现在,我们将创建一个10阶多项式并训练回归器。并提供样本数据点。

polynomial = PolynomialFeatures(degree = 10)
X_train_transformed = polynomial.fit_transform(X_train)
datapoint = [[2.23, 1.35, 1.12]]
poly_datapoint = polynomial.fit_transform(datapoint)

poly_linear_model = linear_model.LinearRegression()
poly_linear_model.fit(X_train_transformed, y_train)
print("\nLinear regression:\n", reg_linear_mul.predict(datapoint))
print("\nPolynomial regression:\n", poly_linear_model.predict(poly_datapoint))

 

线性回归 -

[2.40170462]
多项式回归 -
[1.8697225]
 

在上面的代码中,我们使用了这些小数据。 如果想要一个大的数据集,那么可以使用sklearn.dataset来导入一个更大的数据集。

2,4.8,1.2,3.22.9,4.7,1.5,3.62.5,5,2.8,23.2,5.5,3.5,2.16,5,
2,3.27.6,4,1.2,3.23.2,0.9,2.3,1.42.9,1.9,2.3,1.22.4,3.5,
2.8,3.60.5,3.4,1.8,2.91,4,3,2.50.9,5.9,5.6,0.81.2,2.58,
3.45,1.233.2,5.6,2,3.25.1,1.5,1.2,1.34.5,1.2,4.1,2.32.3,
6.3,2.5,3.22.1,2.8,1.2,3.6
 

易百教程移动端:请扫描本页面底部(右侧)二维码并关注微信公众号,回复:"教程" 选择相关教程阅读或直接访问:http://m.yiibai.com 。

转载于:https://www.cnblogs.com/duoba/p/9534516.html

相关文章:

  • jenkins war下载地址
  • 企业开发的顶级语言调查;南大用“推荐算法”分宿舍;黑客每 60 秒可盗走超 100 万美元资产...
  • OpenCV图像哈希计算及汉明距离的计算
  • 【译Py】2018年8月,GitHub上的Python数据科学明星项目:自动化机器学习、自然语言处理、可视化、机器学习工作流...
  • ElasticSearch(九):springboot项目集成消息中间件activeMQ
  • BZOJ2157旅游——树链剖分+线段树
  • linux中快速清空文件内容的几种方法
  • JS中的继承
  • MyBatis拦截器原理探究
  • 关于电脑使用习惯的若干看法
  • Docker与Tomcat:去掉项目名称进行访问
  • ab压力测试工具的简单使用
  • 一个开发两年的程序员面试总结
  • sigmoid函数求导
  • rhel7 IP地址配置,DNS配置,NetworkManager查看
  • classpath对获取配置文件的影响
  • EventListener原理
  • Javascript编码规范
  • Java面向对象及其三大特征
  • JS正则表达式精简教程(JavaScript RegExp 对象)
  • linux学习笔记
  • RxJS 实现摩斯密码(Morse) 【内附脑图】
  • SpringBoot 实战 (三) | 配置文件详解
  • vue2.0开发聊天程序(四) 完整体验一次Vue开发(下)
  • Vultr 教程目录
  • 跨域
  • 力扣(LeetCode)22
  • 融云开发漫谈:你是否了解Go语言并发编程的第一要义?
  • 手机app有了短信验证码还有没必要有图片验证码?
  • 新版博客前端前瞻
  • 一个6年java程序员的工作感悟,写给还在迷茫的你
  •  一套莫尔斯电报听写、翻译系统
  • 移动端唤起键盘时取消position:fixed定位
  • ​Spring Boot 分片上传文件
  • #AngularJS#$sce.trustAsResourceUrl
  • #经典论文 异质山坡的物理模型 2 有效导水率
  • (1)SpringCloud 整合Python
  • (16)UiBot:智能化软件机器人(以头歌抓取课程数据为例)
  • (C语言)球球大作战
  • (阿里云万网)-域名注册购买实名流程
  • (剑指Offer)面试题34:丑数
  • (三十五)大数据实战——Superset可视化平台搭建
  • (算法)Travel Information Center
  • (一)Mocha源码阅读: 项目结构及命令行启动
  • (一)使用IDEA创建Maven项目和Maven使用入门(配图详解)
  • .aanva
  • .NET 表达式计算:Expression Evaluator
  • .Net(C#)自定义WinForm控件之小结篇
  • .net开发时的诡异问题,button的onclick事件无效
  • .NET开源项目介绍及资源推荐:数据持久层 (微软MVP写作)
  • .NET设计模式(2):单件模式(Singleton Pattern)
  • .net使用excel的cells对象没有value方法——学习.net的Excel工作表问题
  • .NET性能优化(文摘)
  • [ CTF ] WriteUp- 2022年第三届“网鼎杯”网络安全大赛(朱雀组)
  • [ 隧道技术 ] 反弹shell的集中常见方式(四)python反弹shell