大家好,我是小F~

前不久湖北推出大幅购车优惠政策,开启了“史上最强”的汽车补贴。

一辆21万的B级燃油车最高降价9万,只需要12万多点就能拿下来了。

也是带动了其他汽车厂商的降价,超30个汽车品牌加入降价大军。

对于汽车价格,Python也是可以应用上的,比如基于Python机器学习的汽车价格预测

当然上面这种大降价的情况应该是不考虑在内的~

汽车价格取决于很多因素,比如汽车品牌的知名度、汽车的功能(有无辅助驾驶或泊车等功能)、发动机功率和行驶里程等等。

本期小F就通过Python机器学习,来训练一个简单的汽车价格预测模型

汽车价格预测是机器学习的主要研究领域之一,主要基于金融和市场营销领域。

对汽车价格有较大影响的一些因素包含:

1. 品牌

2. 车型外观

3.发动机及功率

4. 里程

5. 安全性能

6. GPS等

如果忽略汽车的品牌,汽车制造商主要是根据汽车可以给客户提供的功能来定价的。

之后,品牌可能会根据其品牌价值进行溢价。

但最重要的因素则是一辆车能给你的生活增添什么价值

下面小F就带大家完成这个使用Python编程语言通过机器学习训练汽车价格预测模型的任务。

用来训练汽车价格预测模型的数据集是从Kaggle下载的。

它包含了影响汽车价格所有主要特征的数据。

先导入相关的Python库,通过Pandas读取数据集。

importnumpyasnpimportpandasaspdimportmatplotlib.pyplotaspltimportseabornassnsfromsklearn.model_selectionimporttrain_test_splitfromsklearn.treeimportDecisionTreeRegressordata=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%的准确性,有点高…

感兴趣的小伙伴可以输入不同的数据,来进行测试看看。

相关文件及代码都已上传,公众号回复【汽车价格预测】即可获取。

万水千山总是情,点个行不行

推荐阅读

··· END ···