python模型预测_用Python如何进行预测型数据分析

本文介绍了如何使用Python进行预测型数据分析,包括线性回归、逻辑回归、K近邻、决策树和随机森林等机器学习算法。通过鸢尾花数据集进行实践,展示了模型训练、交叉验证和评估的过程,强调了特征选择和模型泛化能力的重要性。
摘要由CSDN通过智能技术生成

数据分析一般分为探索性数据分析、验证型数据分析和预测型数据分析。上一篇讲了如何用Python实现验证型数据分析(假设检验),文章链接:转变:用Python如何实现“假设检验”​zhuanlan.zhihu.comv2-a2dc3bad8ed744e769691fde08702a85_180x120.jpg

本文对Python进行预测型数据分析用到的基本机器学习算法和流程进行了简要总结。

预测型数据分析用到的基本机器学习算法思维导图:

本文采用鸢尾花数据集进行预测型数据分析算法实践

导入鸢尾花数据集

import pandas as pd

iris = pd.read_csv('iris.csv')

iris.sample(5)

import seaborn as sns

%matplotlib inline

sns.regplot(x='petal_length', y='petal_width',data=iris)

#花瓣长度、花瓣宽度线性回归拟合图

1. 线性回归

目标变量y是一个数值连续型变量

单个特征构造模型

# scikit-learn 常用机器学习库 简写 sklearn

#利用花瓣长度预测花瓣宽度

from sklearn import linear_model

lm=linear_model.LinearRegression()

features=['petal_length']

X = iris[features]

y = iris['petal_width']

print(X.shape,y.shape)

model = lm.fit(X,y)

print(model.intercept_, model.coef_)

# y= -0.36 + 0.416*x

(150, 1) (150,)

-0.36651404521672704 [0.41641913]

model.predict(4)

array([1.29916248])

交叉检验评估模型

from sklearn.model_selection import cross_val_score

#线性回归打分函数(分数越高,性能越好)

#neg_mean_absolute_error 是 y-y'的绝对值和的平均

#neg_mean_squared_error 是 (y-y')平方和的平均

# cv = 5 表示 5次交叉检验 (常用5次)

#误差函数越大,模型越不好,所以Python自动在前面加 - 号, 越大表示误差越小,模型越好

scores = -cross_val_score(lm, X, y, cv=5, scoring='neg_mean_absolute_error')

print(scores)

#得到 5次交叉检验的绝对值误差

[0.08581817 0.09533821 0.13792154 0.2074044 0.29904645]

#一般用5次的平均值作为衡量模型好坏的指标

import numpy as np

print(np.mean(scores))

0.1651057510041143

scores = - cross_val_score(lm, X, y, cv=5, scoring='neg_mean_squared_error')

print(np.mean(scores))

0.04548097902618274

多个特征构造模型

#两个特征构造模型

features=['petal_length','sepal_length']

X = iris[features]

y = iris['petal_width']

# print(X.shape,y.shape)

model = lm.fit(X,y)

print(model.intercept_, model.coef_)

-0.013852011013002707 [ 0.44992999 -0.08190841]

#评估模型

scores = - cross_val_score(lm, X, y, cv=5, scoring='neg_mean_squared_error')

print(np.mean(scores))

0.0460189525758428

加入花萼长度特征预测花瓣宽度,误差为0.0460,比单独用花瓣长度预测花瓣宽度得到模型的误差0.0454还大 说明没有单独用花瓣长度预测花瓣宽度更合适

#三个特征构造模型并评估模型

features=['petal_length','sepal_length','sepal_width']

X = iris[features]

y = iris['petal_width']</

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值