赞
踩
大家好,我是小F~
前不久湖北推出大幅购车优惠政策,开启了“史上最强”的汽车补贴。
一辆21万的B级燃油车最高降价9万,只需要12万多点就能拿下来了。
也是带动了其他汽车厂商的降价,超30个汽车品牌加入降价大军。
对于汽车价格,Python也是可以应用上的,比如基于Python机器学习的汽车价格预测。
当然上面这种大降价的情况应该是不考虑在内的~
汽车价格取决于很多因素,比如汽车品牌的知名度、汽车的功能(有无辅助驾驶或泊车等功能)、发动机功率和行驶里程等等。
本期小F就通过Python机器学习,来训练一个简单的汽车价格预测模型。
汽车价格预测是机器学习的主要研究领域之一,主要基于金融和市场营销领域。
对汽车价格有较大影响的一些因素包含:
1. 品牌
2. 车型外观
3. 发动机及功率
4. 里程
5. 安全性能
6. GPS等
如果忽略汽车的品牌,汽车制造商主要是根据汽车可以给客户提供的功能来定价的。
之后,品牌可能会根据其品牌价值进行溢价。
但最重要的因素则是一辆车能给你的生活增添什么价值。
下面小F就带大家完成这个使用Python编程语言通过机器学习训练汽车价格预测模型的任务。
用来训练汽车价格预测模型的数据集是从Kaggle下载的。
它包含了影响汽车价格所有主要特征的数据。
先导入相关的Python库,通过Pandas读取数据集。
- import numpy as np
- import pandas as pd
- import matplotlib.pyplot as plt
- import seaborn as sns
- from sklearn.model_selection import train_test_split
- from sklearn.tree import DecisionTreeRegressor
-
- data = pd.read_csv("CarPrice.csv")
- print(data.head())
显示打印前五行的数据。
这个数据集有26列,在下一步操作之前,检查数据集是否包含空值。
- # 检查空值
- print(data.isnull().sum())
发现并没有空值存在。
包含车名、燃料类型、车长、车宽、车高、发动机功率、转速等信息。
下面继续来探索这个数据集,以了解我们正在处理的数据情况。
- # 数据信息
- print(data.info())
有205行数据,每一列的数据格式,空值情况。
一共有三种数据类型,float、int、object。
- # 数据描述
- print(data.describe())
获取到每一列的计数、平均值等情况。
对汽车名称进行去重操作,看看一共有多少种车型。
- # 去重
- print(data.CarName.unique())
发现了不少熟悉的品牌,比如奥迪、宝马、马自达、丰田、本田、沃尔沃等。
这个数据集中的price列是我们需要预测其值的列,来看一下价格这一列数据的分布情况。
- # 设置样式
- sns.set_style("whitegrid")
- plt.figure(figsize=(10, 5))
- sns.distplot(data.price)
- # 显示
- plt.show()
可以看出汽车价格主要分布在10000美元左右。
现在让我们分析这个数据集所有特征之间的相关性
- # 相关性
- print(data.corr())
打印结果。
制作图表进行显示查看。
- plt.figure(figsize=(10, 5))
- correlations = data.corr()
- # 设置样式
- sns.heatmap(correlations, cmap="coolwarm", annot=True)
- # 显示
- plt.show()
观察价格这一特征,发现汽车价格受发动机影响最大。
最后,使用决策树回归算法来训练一个汽车价格预测模型。
决策树呈树形结构,是一种基本的回归和分类方法。
将数据分成训练集和测试集,并使用决策树回归算法来训练模型。
- # 预测项
- predict = "price"
- # 原始数据
- data = data[["symboling", "wheelbase", "carlength",
- "carwidth", "carheight", "curbweight",
- "enginesize", "boreratio", "stroke",
- "compressionratio", "horsepower", "peakrpm",
- "citympg", "highwaympg", "price"]]
-
- # 变量
- x = np.array(data.drop([predict], 1))
- # 结果
- y = np.array(data[predict])
-
- # 分配数据集
- xtrain, xtest, ytrain, ytest = train_test_split(x, y, test_size=0.2)
- # 决策树回归算法
- model = DecisionTreeRegressor()
- # 训练模型
- model.fit(xtrain, ytrain)
-
- # 模型预测
- predictions = model.predict(xtest)
- # 准确性指标
- print(model.score(xtest, predictions))
获取到的准确性指标为1.0。
表示该模型在测试集上给出了100%的准确性,有点高...
感兴趣的小伙伴可以输入不同的数据,来进行测试看看。
相关文件及代码都已上传,公众号回复【汽车价格预测】即可获取。
万水千山总是情,点个
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。