首页 > 其他分享 >汽车交易情况分析及价格预测3_搭建模型

汽车交易情况分析及价格预测3_搭建模型

时间:2023-05-13 10:47:25浏览次数:29  
标签:plt ln 模型 feature 汽车交易 train model price 搭建

一、线性回归

sample_feature = sample_feature.dropna().replace('-', 0).reset_index(drop=True)
sample_feature['notRepairedDamage'] = sample_feature['notRepairedDamage'].astype(np.float32)
train = sample_feature[continuous_feature_names + ['price']]

train_X = train[continuous_feature_names]
train_y = train['price']

model = LinearRegression(normalize=True)

model = model.fit(train_X, train_y)

绘制特征v_9的值与标签的散点图,图片发现模型的预测结果(蓝色点)与真实标签(黑色点)的分布差异较大,且部分预测值出现了小于0的情况,说明我们的模型存在一些问题

plt.scatter(train_X['v_9'][subsample_index], train_y[subsample_index], color='black')
plt.scatter(train_X['v_9'][subsample_index], model.predict(train_X.loc[subsample_index]), color='blue')
plt.xlabel('v_9')
plt.ylabel('price')
plt.legend(['True Price','Predicted Price'],loc='upper right')
print('The predicted price is obvious different from true price')
plt.show()

 通过作图我们发现数据的标签(price)呈现长尾分布,不利于我们的建模预测。原因是很多模型都假设数据误差项符合正态分布,而长尾分布的数据违背了这一假设。

print('It is clear to see the price shows a typical exponential distribution')
plt.figure(figsize=(15,5))
plt.subplot(1,2,1)
sns.distplot(train_y)
plt.subplot(1,2,2)
sns.distplot(train_y[train_y < np.quantile(train_y, 0.9)])

 在这里我们对标签进行了对数变换,使标签贴近于正态分布

train_y_ln = np.log(train_y + 1)

import seaborn as sns
print('The transformed price seems like normal distribution')
plt.figure(figsize=(15,5))
plt.subplot(1,2,1)
sns.distplot(train_y_ln)
plt.subplot(1,2,2)
sns.distplot(train_y_ln[train_y_ln < np.quantile(train_y_ln, 0.9)])

 再次进行可视化

 绘制学习率曲线与验证曲线

 

 

二、非线性模型

models = [LinearRegression(),
DecisionTreeRegressor(),
RandomForestRegressor(),
GradientBoostingRegressor(),
MLPRegressor(solver='lbfgs', max_iter=100),
XGBRegressor(n_estimators = 100, objective='reg:squarederror'),
LGBMRegressor(n_estimators = 100)]

 

result = dict()
for model in models:
model_name = str(model).split('(')[0]
scores = cross_val_score(model, X=train_X, y=train_y_ln, verbose=0, cv = 5, scoring=make_scorer(mean_absolute_error))
result[model_name] = scores
print(model_name + ' is finished')

 

result = pd.DataFrame(result)
result.index = ['cv' + str(x) for x in range(1, 6)]
result

 

标签:plt,ln,模型,feature,汽车交易,train,model,price,搭建
From: https://www.cnblogs.com/0chenxian0/p/17396862.html

相关文章

  • 汽车交易情况分析及价格预测2_特征工程
    一、特征构造#训练集和测试集放在一起,方便构造特征train['train']=1test_data['train']=0data=pd.concat([train,test_data],ignore_index=True,sort=False)增加新特征:使用时间data['used_time']=(pd.to_datetime(data['creatDate'],format='%Y%m%......
  • 汽车交易情况分析及价格预测1_EDA
    一、数据简介二手车交易记录,训练集数据15万条,测试集数据5万条。包括交易ID、汽车交易名称、汽车注册日期、车型编码、汽车品牌、车身类型、汽车已行驶公里、报价类型、二手车交易价格等信息。同时会对name、model、brand和regionCode等信息进行脱敏。name-汽车编码regDate......
  • 《花雕学AI》34:用13种Prompt玩转AI聊天机器人—揭秘ChatGPT模型
    引言:聊天机器人是一种能够通过自然语言进行交流的智能系统,它可以模仿人类的对话方式,提供各种信息、服务或娱乐。随着人工智能技术的发展,聊天机器人的应用越来越广泛,从电商、教育、医疗、旅游等领域,到社交、游戏、文学等领域,都可以看到聊天机器人的身影。聊天机器人不仅可以给用户......
  • 视觉大模型DINOv2:自我监督学习的新领域
    如果你对自监督学习感兴趣,可能听说过Facebook人工智能的DINO(无标签知识蒸馏)。我们在以前的文章中也介绍过它。DINOv2不仅是一个新版本而且带来了新的改进,并为判别性自监督学习设定了更高的标准。当然公司的名字也从Facebook变为了Meta。本文将介绍DINOv2是如何改进的,以及这些进......
  • 使用讯飞模型学习Excel VLOOKUP的一次体验
    提问1:EXCELVLOOKUP回答1:VLOOKUP是Excel中的一种查找函数,用于在一个表格中查找某个值,并返回该值所在行的指定列的值。其语法如下:```VLOOKUP(lookup_value,table_array,col_index_num,[range_lookup])```其中:-lookup_value:要查找的值。-table_array:要在其中进行查找的......
  • FPGA读写IIC驱动源码,源码包含iic驱动,testbench以及eeprom模型。
    FPGA读写IIC驱动源码,源码包含iic驱动,testbench以及eeprom模型。该代码已经下板验证通过。ID:17100653395566310......
  • 免费搭建可访问的云服务
       免费配置就是这样的,虽然只有1核1g,但是对于初学者来说,已经够用了,用来练习nginx部署,tomcat部署,我本次主要使用这台服务器进行nginx的https部署测试。在阿里云购买一个域名,最便宜的是9元即可买到在freessl中免费申请一个ssl证书免费搞一个云服务器在服务器上面安装ngi......
  • 03 加载模型
    一、AssimpAssimp可以将模型导成如下的格式:首先,该模型被打包成一个scene对象,是aiScene类型的,一般是导出为指向常量的指针。在scene中保存着三个对象:第一个是一个aiNode类型的指针,即根节点scene->mRootNode。第二个是一个aiMesh*类型的数组,即scene->mMeshes。保存着所有mesh......
  • 钢管订购和运输模型——Python实现
    要铺设一条\(A_1→A_2→…→A_{15}\)的输送天然气的主管道,如图所示。经筛选后可以生产这种主管道钢管的钢厂有\(S_1,S_2,…,S_7\)。图中粗线表示铁路,单细线表示公路,双细线表示要铺设的管道(假设沿管道或者原有公路,或者建有施工公路),圆圈表示火车站,每段铁路、公路和管道旁的......
  • 头部证券公司安全体系搭建实战讲解—开源网安S-SDLC平台助力金融科技安全发展
    数字化时代背景下,新兴技术广泛应用导致软件安全隐患不断扩大。而金融行业由于项目周期长、业务规模大、应用数量多、合规监管严、内外合作多等特性,进一步加重了安全风险。与此同时,《等保2.0》、《网络安全法》等国家政策的发布,自上而下推动信息安全发展,对金融机构的安全防护提出更......