欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

电动汽车价格预测

发布时间:2023/12/14 编程问答 44 豆豆
生活随笔 收集整理的这篇文章主要介绍了 电动汽车价格预测 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

某品牌电动汽车给出了不同规格的电动车属性与价格数据(见 train.xlsx),另有一批未 知价格的电动车属性数据(见 test.xlsx)。
附: 1、属性的具体含义请见:tag.xlsx 2、价格已分档,为 0-3 之间的一个整数,请将最后的预测也以分档的形式给出。

train的数据形式,要转成csv文件的话,另存,看下图操作即可。


里面包含的数据在这里:
链接:https://pan.baidu.com/s/1C6R9M8pRJdl-WO8lxMYZyQ
提取码:cpfn
复制这段内容后打开百度网盘手机App,操作更方便哦


以方差选择法、相关系数法、互信息法作为分析的主要方法,以MATLAB为分析工具,得出影响电动汽车价格的主要价值属性。在此基础上,我们使用熵值法对选出的电动汽车主要属性进行确定和验证,确保主要属性的精确性及有效性。
最后根据筛选出的主要特征进行分类预测,下面附上基于KNN的程序:

import numpy as np import operator from sklearn.metrics import classification_report,confusion_matrix import operator import pandas as pd import sklearn import csv# KNN算法 def knn(x_test, x_data, y_data, k):'''x_test:测试数据x_data:已知数据y_data:已知数据的标签K:选择K个最近的实例返回k个中标签最多的类别'''# 计算样本数量x_data_size = x_data.shape[0]# 复制x_testnp.tile(x_test, (x_data_size,1))# 计算x_test与每一个样本的差值diffMat = np.tile(x_test, (x_data_size,1)) - x_data# 计算差值的平方sqDiffMat = diffMat**2# 求和sqDistances = sqDiffMat.sum(axis=1)# 开方distances = sqDistances**0.5# 从小到大排序sortedDistances = distances.argsort()classCount = {}for i in range(k):# 获取标签votelabel = y_data[sortedDistances[i]]# 统计标签数量classCount[votelabel] = classCount.get(votelabel,0) + 1# 根据operator.itemgetter(1)-第1个值对classCount排序,然后再取倒序sortedClassCount = sorted(classCount.items(),key=operator.itemgetter(1), reverse=True)# 获取数量最多的标签return sortedClassCount[0][0]if __name__ == "__main__":# 载入数据data = np.genfromtxt("C:\\Users\\User\\Desktop\\train.csv",delimiter=",")x_data = data[1:,1:21] # 全部特征值y_data = data[1:,21] # 价格档位# 测试数据unknown_data = np.genfromtxt("C:\\Users\\User\\Desktop\\test.csv",delimiter=",")test_data = unknown_data[1:,1:21]# 将每行数据进行对比并写入一个新的文档,遍历做法for j in range(len(test_data) - 1):x_test = test_data[j:j+1, :21]result = []result.append(knn(x_test, x_data, y_data, 5))output = (',').join(str(i) for i in result) # 去掉中括号# 写入数据namefile = open("C:\\Users\\User\\Desktop\\result.csv", 'a') # 以'w'的方式打开会覆盖以前的数据 以'a'写入,若存在,则在末尾追加写入namefile.write(str(output))namefile.write('\n') # 换行namefile.close()

最后预测结果会在result.csv文件里面,我这里是用一个新的文件写入。

总结

以上是生活随笔为你收集整理的电动汽车价格预测的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。