线性回归实例-----预测鲍鱼年龄
预测鲍鱼年龄
前言
线性回归是监督学习的一个方向,用来预测连续的数值型数据。比如房价预测、销量预测等等。
- 优点:计算简单,易于理解
- 缺点:只使用与线性数据,对于非线性数据使用非线性回归模型
- 使用条件:连续的数值型数据
实战:预测鲍鱼年龄
1.数据源
本文使用的数据源是从UCI数据库中获取。UCI数据库是个常用的标准测试数据库。
下载地址:https://archive.ics.uci.edu/ml/datasets/Abalone
点击 Data Folder 进行下载
其中abalone.data是数据源,abalone.names是对数据的解释说明,包含列名、含义等等。可使用记事本打开。这里将其转为.txt格式
2.数据处理
1.读取数据
# 引包
[1]:import pandas as pdimport numpy as np# 读取数据
[2]:data = pd.read_table("abalone.txt",sep=",",header=None)data.columns = ["Sex","Length","Diameter continuous","Height","Whole weight","Shucked weight","Viscera weight","Shell weight","Rings"]data.head()
2. 数据处理
对性别转为数值类型,“M”为1,“F”为-1,“|”为0
# 对性别转为数值类型,“M”为1,“F”为-1,“|”为0
[4]:def tran(x):if x == "M":return 1elif x == "F":return -1else:return 0
[5]:data.Sex = data.Sex.apply(tran)[6]:data.shape
[6]:(4177, 9)
3.建模
1.引包
# 将数据矩阵随机划分训练集和测试集
from sklearn.model_selection import train_test_split
# 线性回归模型
from sklearn.linear_model import LinearRegression
# 画图
import plotly
import plotly.graph_objs as go
# 评估模型准确率
from sklearn import metrics
2.查看数据
这里使用三个属性来初步查看数据
fig1 = go.Scatter3d(x=data['Length'],y=data['Height'],z=data['Whole weight'],marker=dict(opacity=0.9,reversescale=True,colorscale='Blues',size=5),line=dict (width=0.02),mode='markers')mylayout = go.Layout(scene=dict(xaxis=dict( title="curb-weight"),yaxis=dict( title="horsepower"),zaxis=dict(title="price")),)plotly.offline.plot({"data": [fig1],"layout": mylayout},auto_open=True,filename=("3DPlot.html"))
3.建模
# 划分训练集和数据集
[8]:X_train,X_test,Y_train,Y_test = train_test_split(data.iloc[:,0:-1],data.iloc[:,-1],test_size=0.3,random_state=10)X_train.shape
[8]:(2923, 8)# 建模
[9]:model = LinearRegression()model.fit(X_train,Y_train)
[10]:predict_result = model.predict(X_test)
4.结果对比
拿实际数据的结果前五个和预测结果前五个进行对比:
[11]:predict_result[:5]
[11]:array([ 7.8554181 , 10.87956598, 9.89345623, 6.64893993, 8.99769228])[12]:Y_test[:5].values
[12]:array([ 7, 10, 8, 9, 10], dtype=int64)
5.模型评估
这里分别使用回归评估指标MSE(均方误差),RMSE(均方根误差),R-Squared(准确度)来进行评估。
[13]:mse = metrics.mean_squared_error(Y_test,predict_result)mse
[13]:4.926650489974809[14]:rmse = np.sqrt(mse)rmse
[14]:2.2196059312352743[15]:r2 = metrics.r2_score(Y_test,predict_result)r2
[15]:0.5298367786705702
4.总结
可以看出模型质量并不高,并不能达到我们想要的预测结果。所以该数据源不能使用简单的线性回归模型来进行预测。本文只是对sklearn中的线性回归模型通过实例进行使用说明。以后可以使用加权线性回归进行处理。
未完待续。。。
线性回归实例-----预测鲍鱼年龄相关推荐
- 回归分析及实际案例:预测鲍鱼年龄
上一篇文章:线性回归(Linear regression)算法 引入: 1.线性回归: 算法的优点: 结果易于理解,计算不复杂 缺点:对非线性数据拟合不好 目标:平方误差和最小 求解(对参数w求导等 ...
- 线性回归实战---Abalone鲍鱼年龄预测
线性回归实现Abalone鲍鱼年龄预测 文章目录 线性回归实现Abalone鲍鱼年龄预测 一.环境准备 数据集简介 二.线性回归基础知识 什么是线性回归? "最小二乘法" 求解线性 ...
- 《机器学习实战》8.2 线性回归基础篇之预测鲍鱼年龄
<机器学习实战>8.2 线性回归基础篇之预测鲍鱼年龄 搜索微信公众号:'AI-ming3526'或者'计算机视觉这件小事' 获取更多人工智能.机器学习干货 csdn:https://blo ...
- 回归综合案例——利用回归模型预测鲍鱼年龄
回归综合案例--利用回归模型预测鲍鱼年龄 1 数据集探索性分析 首先将鲍鱼数据集abalone_dataset.csv读取为pandas的DataFrame格式. import pandas as p ...
- 鲍鱼数据集案例分析-预测鲍鱼年龄(线性回归/梯度下降法实操)
数据集来源UCI Machine Learning Repository: Abalone Data Set 目录 一.数据集探索性分析 二.鲍鱼数据预处理 1.对sex特征进行OneHot编码,便于 ...
- 梯度下降法实现线性回归, 实例---预测波士顿房价
本文先手动实现一个线性回归模型, 然后用sklearn的线性回归模型作对比 import pandas as pd df = pd.read_csv('house_data.csv') #数据集可到网 ...
- 基于Python的机器学习之预测鲍鱼年龄数据集
用于训练的数据集: 1.000000 0.067732 3.176513 1.000000 0.427810 3.816464 1.000000 0.995731 ...
- 使用线性回归,岭回归,Lasso回归预测鲍鱼年龄
实验目的 掌握数据预处理方法 掌握线性回归预测基本原理与实现. 实验问题背景 鲍鱼的年龄可以通过鲍鱼壳的"环数"来判断,但是获取这个"环数"是十分耗时的,需要锯 ...
- 十一、加权线性回归案例:预测鲍鱼的年龄
加权线性回归案例:预测鲍鱼的年龄 点击文章标题即可获取源代码和笔记 数据集:https://download.csdn.net/download/weixin_44827418/12553408 1. ...
最新文章
- golang中文文档_Golang 标准库 限流器 time/rate 设计与实现
- SQL Server各种日期计算方法
- 【Qt】错误GL/gl.h: No such file or directory的解决方法(以及cannot find -lGL解决方法)
- vue-router之路由属性配置说明(十)
- 根据选择计算Mask值
- http://blog.sina.com.cn/s/blog_6a01140c0100wimi.html
- 【转】数据库一对一、一对多、多对多关系
- QAM的符号能量及比特能量
- 禁用deepin的搜狗输入法简繁切换快捷键
- C语言miller rabin算法,浅谈miller_rabin算法和pollard_rho算法
- 机器人香囊_中山街道仪凤街社区开展“能手包粽子 巧手绣香包”欢度端午节活动...
- 如何完整保存离线网页
- 我们需要培养职业化的工作习惯
- 大数据学习路线(完整详细版)
- C++各大有名库的介绍(一)
- Linux下nginx完全卸载删除+安装以及环境配置
- 专科入行软件测试可行么
- 百度语音识别java教程,Java实现的百度语音识别功能示例
- 使用Spring Boot Thin Launcher 打包Spring Boot项目,jar包瘦身
- 这个发热鞋垫厉害了,有它冬天再也不怕脚冷
热门文章
- 亿道信息丨12.2英寸二合一笔记本丨加固型笔记本丨三防笔记本
- JAVA Timer()实现可重置计时器
- vue 集成 sweetalert2 提示组件
- 伽罗网站服务器,伽罗首件出冰矛,究竟是“黑科技”还是“坑”?原来我们都错了...
- 一个命令解密Bitlocker
- 股价崩盘指标表(2010-2021年)
- (一)JasperReport介绍
- 树莓派有线网络设置_Adafruit的树莓派教程:网络设置
- 459. 重复的子字符串-KMP算法
- 简笔画教程——设计简宝玉+简黛玉(干货)