二手车价格预测 | 构建AI模型并部署Web应用 ⛵

Python二手车价格预测(二)—— 模型训练及可视化 Python二手车价格预测之模型训练与可视化,使用7种经典回归模型进行训练,并对结果进行可视化。 阅读详情

💡 作者:韩信子@ShowMeAI
📘 数据分析实战系列:https://www.showmeai.tech/tutorials/40
📘 机器学习实战系列:https://www.showmeai.tech/tutorials/41
📘 本文地址:https://www.showmeai.tech/article-detail/300
📢 声明:版权所有,转载请联系平台与作者并注明出处
📢 收藏ShowMeAI查看更多精彩内容

一份来自『RESEARCH AND MARKETS』的二手车报告预计,从 2022 年到 2030 年,全球二手车市场将以 6.1% 的复合年增长率增长,到 2030 年达到 2.67 万亿美元。人工智能技术的广泛使用增加了车主和买家之间的透明度,提升了购买体验,极大地推动了二手车市场的增长。

基于机器学习对二手车交易价格进行预估,这一技术已经在二手车交易平台中广泛使用。在本篇内容中,ShowMeAI 会完整构建用于二手车价格预估的模型,并部署成web应用。

💡 数据分析处理&特征工程

本案例涉及的数据集可以在 🏆 kaggle汽车价格预测 获取,也可以在ShowMeAI的百度网盘地址直接下载。

🏆 实战数据集下载(百度网盘):公众号『ShowMeAI研究中心』回复『实战』,或者点击 这里 获取本文 [11] 构建AI模型并部署Web应用,预测二手车价格 『CarPrice 二手车价格预测数据集』

⭐ ShowMeAI官方GitHub:https://github.com/ShowMeAI-Hub

① 数据探索

数据分析处理涉及的工具和技能,欢迎大家查阅ShowMeAI对应的教程和工具速查表,快学快用。

我们先加载数据并初步查看信息。

import numpy as np
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
import pickle
%matplotlib.inline

df=pd.read_csv('CarPrice_Assignment.csv')
df.head()

数据 Dataframe 的数据预览如下:

我们对属性字段做点分析,看看哪些字段与价格最相关,我们先计算相关性矩阵

df.corr()

再对相关性进行热力图可视化。

sns.set(rc={"figure.figsize":(20, 20)})
sns.heatmap(df.corr(), annot = True)

其中各字段和price的相关性如下图所示,我们可以看到其中有些字段和结果之间有非常强的相关性。

我们可以对数值型字段,分别和price目标字段进行绘图详细分析,如下:

for col in df.columns: 
    if df[col].dtypes != 'object':
        sns.lmplot(data = df, x = col, y = 'price')

可视化结果图如下:

我们把一些与价格相关性低(r<0.15)的字段删除掉:

df.drop(['car_ID'], axis = 1, inplace = True) 
to_drop = ['peakrpm', 'compressionratio', 'stroke', 'symboling']
df.drop(df[to_drop], axis = 1, inplace = True)

② 特征工程

特征工程涉及的方法技能,欢迎大家查阅ShowMeAI对应的教程文章,快学快用。

车名列包括品牌和型号,我们对其拆分并仅保留品牌:

df['CarName'] = df['CarName'].apply(lambda x: x.split()[0]) 

输出:

我们发现有一些车品牌的别称或者拼写错误,我们做一点数据清洗如下:

df['CarName'] = df['CarName'].str.lower()
df['CarName']=df['CarName'].replace({'vw':'volkswagen','vokswagen':'volkswagen','toyouta':'toyota','maxda':'mazda','porcshce':'porsche'})

再对不同车品牌的数量做绘图,如下:

sns.set(rc={'figure.figsize':(30,10)})
sns.countplot(data = df, x='CarName')

③ 特征编码&数据变换

下面我们要做进一步的特征工程:

  • 类别型特征

大部分机器学习模型并不能处理类别型数据,我们会手动对其进行编码操作。类别型特征的编码可以采用 序号编码 或者 独热向量编码(具体参见ShowMeAI文章 机器学习实战 | 机器学习特征工程最全解读),独热向量编码示意图如下:

  • 数值型特征

针对不同的模型,有不同的处理方式,比如幅度缩放和分布调整。

下面我们先将数据集的字段分为两类:类别型和数值型:

categorical = []
numerical = []
for col in df.columns:
   if df[col].dtypes == 'object':
      categorical.append(col)
   else:
      numerical.append(col)

下面我们使用pandas中的哑变量变换操作把所有标记为“categorical”的特征进行独热向量编码。

# 独热向量编码
x1 = pd.get_dummies(df[categorical], drop_first = False)
x2 = df[numerical]
X = pd.concat([x2,x1], axis = 1)
X.drop('price', axis = 1, inplace = True)

下面我们对数值型特征进行处理,首先我们看看标签字段price,我们先绘制一下它的分布,如下:

sns.histplot(data=df, x="price", kde=True) 

大家从图上可以看出这是一个有偏分布。我们对它做一个对数处理,以使其更接近正态分布。(另外一个考量是,如果我们以对数后的结果作为标签来建模学习,那还原回 price 的过程,会使用指数操作,这能保证我们得到的价格一定是正数) ,代码如下:

#修复偏态分布 
df["price_log"]=np.log(df["price"])
sns.histplot(data=df, x="price_log", kde=True)

校正过后的数据分布更接近正态分布了,做过这些基础处理之后,我们准备开始建模了。

💡 机器学习建模

① 数据集切分&数据变换

让我们拆分数据集为训练和测试集,并对其进行基本的数据变换操作:

#切分数据 
from sklearn.model_selection import train_test_split

y = df['price_log']
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size= 0.333, random_state=1)
 
#特征工程-幅度缩放
from sklearn.preprocessing import StandardScaler
sc= StandardScaler()
X_train[:, :(len(x1.columns))]= sc.fit_transform(X_train[:, :(len(x1.columns))])
X_test[:, :(len(x1.columns))]= sc.transform(X_test[:, :(len(x1.columns))])

② 建模&调优

建模涉及的方法技能,欢迎大家查阅ShowMeAI对应的教程文章,快学快用。

我们这里的数据集并不大(样本数不多),基于模型复杂度和效果考虑,我们先测试 4 个模型,看看哪一个表现最好。

  • Lasso regression
  • Ridge regression
  • 随机森林回归器
  • XGBoost回归器

我们先从scikit-learn导入对应的模型,如下:

#回归模型 
from sklearn.linear_model import Lasso, Ridge
from sklearn.ensemble import RandomForestRegressor
import xgboost as xgb

③ 建模 pipeline

为了让整个建模过程更加紧凑简介,我们创建一个pipeline来训练和调优模型。 具体步骤为:

  • 使用随机超参数训练评估每个模型。
  • 使用网格搜索调优每个模型的超参数。
  • 用找到的最佳参数重新训练评估模型。

我们先从 scikit-learn 导入网格搜索:

from sklearn.model_selection import GridSearchCV

接着我们构建一个全面的评估指标函数,打印每个拟合模型的指标(R 平方、均方根误差和平均绝对误差等):

def metrics(model):
   res_r2 = []
   res_RMSE = []
   res_MSE = []
   model.fit(X_train, y_train)
   Y_pred = model.predict(X_test)   

   #计算R方
   r2 = round(r2_score(y_test, Y_pred),4)
   print( 'R2_Score: ', r2)
   res_r2.append(r2)   
   
   #计算RMSE
   rmse = round(mean_squared_error(np.exp(y_test),np.exp(Y_pred), squared=False), 2)
   print("RMSE: ",rmse)
   res_RMSE.append(rmse)   

   #计算MAE
   mse = round(mean_absolute_error(np.exp(y_test),np.exp(Y_pred)), 2)
   print("MAE: ", mse)
   res_MSE.append(mse)

下面要构建pipeline了:

# 候选模型
models={
   'rfr':RandomForestRegressor(bootstrap=False, max_depth=15, max_features='sqrt', min_samples_split=2, n_estimators=100),
   
   'lasso':Lasso(alpha=0.005, fit_intercept=True),
   
   'ridge':Ridge(alpha = 10, fit_intercept=True), 'xgb':xgb.XGBRegressor(bootstrap=True, max_depth=2, max_features = 'auto', min_sample_split = 2, n_estimators = 100)
}

# 不同的模型不同建模方法
for mod in models:
   if mod == 'rfr' or mod == 'xgb':
     print('Untuned metrics for: ', mod)
     metrics(models[mod])
     print('\n')
     print('Starting grid search for: ', mod)
     params = {
       "n_estimators"      : [10,100, 1000, 2000, 4000, 6000],
       "max_features"      : ["auto", "sqrt", "log2"],
       "max_depth"         : [2, 4, 8, 12, 15],
       "min_samples_split" : [2,4,8],
       "bootstrap": [True, False],
    }
    if mod == 'rfr':
       rfr = RandomForestRegressor()
       grid = GridSearchCV(rfr, params, verbose=5, cv=2)
       grid.fit(X_train, y_train)
       print("Best score: ", grid.best_score_ )
       print("Best: params", grid.best_params_)
    else:
       xgboost = xgb.XGBRegressor()
       grid = GridSearchCV(xgboost, params, verbose=5, cv=2)
       grid.fit(X_train, y_train)
       print("Best score: ", grid.best_score_ )
       print("Best: params", grid.best_params_)
   else:
      print('Untuned metrics for: ', mod)
      metrics(models[mod])
      print('\n')
      print('Starting grid search for: ', mod)
      params = {
         "alpha": [0.005, 0.05, 0.1, 1, 10, 100, 290, 500],
         "fit_intercept": [True, False]
      }
      if mod == 'lasso':
         lasso = Lasso()
         grid = GridSearchCV(lasso, params, verbose = 5, cv = 2)
         grid.fit(X_train, y_train)
         print("Best score: ", grid.best_score_ ) 
         print("Best: params", grid.best_params_)
      else:
         ridge = Ridge()
         grid = GridSearchCV(ridge, params, verbose = 5, cv = 2)
         grid.fit(X_train, y_train)
         print("Best score: ", grid.best_score_ )
         print("Best: params", grid.best_params_)

以下是随机调整模型的结果:

在未调超参数的情况下,我们看到差异不大的R方结果,但 Lasso 的误差最小。

我们再看看网格搜索的结果,以找到每个模型的最佳参数:

现在让我们将这些参数应用于每个模型,并查看结果:

调参后的结果相比默认超参数,都有提升,但 Lasso回归依旧有最佳的效果(与本例的数据集样本量和特征相关性有关),我们最终保留Lasso回归模型并存储模型到本地。

lasso_reg = Lasso(alpha = 0.005, fit_intercept = True)
pickle.dump(lasso_reg, open('model.pkl','wb'))

💡 web应用开发

下面我们把上面得到的模型部署到网页端,形成一个可以实时预估的应用,我们这里使用 gradio 库来开发 Web 应用程序,实际的web应用预估包含下面的步骤:

  • 用户在网页表单中输入数据
  • 处理数据(特征编码&变换)
  • 数据处理以匹配模型输入格式
  • 预测并呈现给用户的价格

① 基本开发

首先,我们导入原始数据集和做过数据处理(独热向量编码)的数据集,并保留它们各自的列。

# df的列
#Columns of the df
df = pd.read_csv('df_columns')
df.drop(['Unnamed: 0','price'], axis = 1, inplace=True)
cols = df.columns

# df的哑变量列
dummy = pd.read_csv('dummy_df')
dummy.drop('Unnamed: 0', axis = 1, inplace=True)
cols_to_use = dummy.columns

接下来,对于类别型特征,我们构建web应用端下拉选项:

# 构建应用中的候选值

# 车品牌首字母大写
cars = df['CarName'].unique().tolist()
carNameCap = []
for col in cars:
   carNameCap.append(col.capitalize())

#fueltype字段
fuel = df['fueltype'].unique().tolist()
fuelCap = []
for fu in fuel:
   fuelCap.append(fu.capitalize())

#carbod, engine type, fuel systems等字段
carb = df['carbody'].unique().tolist()
engtype = df['enginetype'].unique().tolist()
fuelsys = df['fuelsystem'].unique().tolist()

OK,我们会针对上面这些模型预估需要用到的类别型字段,开发下拉功能并添加候选项。

下面我们定义一个函数进行数据处理,并预估返回价格:

# 数据变换处理以匹配模型
def transform(data):
   # 数据幅度缩放
   sc = StandardScaler()
   
   # 导入模型
   model= pickle.load(open('model.pkl','rb'))
   
   # 新数据Dataframe
   new_df = pd.DataFrame([data],columns = cols)   
   # 区分类别型和数值型特征
   cat = []
   num = []
   for col in new_df.columns:
      if new_df[col].dtypes == 'object':
         cat.append(col)
      else:
         num.append(col)    
    x1_new = pd.get_dummies(new_df[cat], drop_first = False)
    x2_new = new_df[num]
    
    X_new = pd.concat([x2_new,x1_new], axis = 1)
    final_df = pd.DataFrame(columns = cols_to_use)
    final_df = pd.concat([final_df, X_new])
    final_df = final_df.fillna(0)
    X_new = final_df.values
    X_new[:, :(len(x1_new.columns))]= sc.fit_transform(X_new[:,
:(len(x1_new.columns))])    
    output = model.predict(X_new)
    return "The price of the car " + str(round(np.exp(output)[0],2)) + "$"

下面我们在gradio web应用程序中创建元素,我们会为类别型字段构建下拉菜单或复选框,为数值型字段构建输入框。 参考代码如下:

# 类别型
car = gr.Dropdown(label = "Car brand", choices=carNameCap)
# 数值型
curbweight = gr.Slider(label = "Weight of the car (in pounds)", minimum = 500, maximum = 6000)

现在,让我们在界面中添加所有内容:

一切就绪就可以部署了!

② 部署

下面我们把上面得到应用部署一下,首先我们对于应用的 ip 和端口做一点设定

export GRADIO_SERVER_NAME=0.0.0.0
export GRADIO_SERVER_PORT="$PORT"

大家确定使用pip安装好下述依赖:

numpy                            
pandas                             
scikit-learn                             
gradio                             
Flask                             
argparse                             
gunicorn                             
rq

接着运行 python WebApp.py 就可以测试应用程序了,WebApp.py内容如下:

import gradio as gr
import numpy as np
import pandas as pd
import pickle
from sklearn.preprocessing import StandardScaler

# 数据字典
asp = {
    'Standard':'std',
   'Turbo':'turbo'
}

drivew = {
    'Rear wheel drive': 'rwd',
    'Front wheel drive': 'fwd', 
    '4 wheel drive': '4wd'
}

cylnum = {
    2: 'two',
    3: 'three', 
    4: 'four',
    5: 'five', 
    6: 'six', 
    8: 'eight',
    12: 'twelve'
}

# 原始df字段名
df = pd.read_csv('df_columns')
df.drop(['Unnamed: 0','price'], axis = 1, inplace=True)
cols = df.columns

# 独热向量编码过后的字段名
dummy = pd.read_csv('dummy_df')
dummy.drop('Unnamed: 0', axis = 1, inplace=True)
cols_to_use = dummy.columns

# 车品牌名
cars = df['CarName'].unique().tolist()
carNameCap = []
for col in cars:
    carNameCap.append(col.capitalize())

# fuel
fuel = df['fueltype'].unique().tolist()
fuelCap = []
for fu in fuel:
    fuelCap.append(fu.capitalize())

#For carbod, engine type, fuel systme
carb = df['carbody'].unique().tolist() 
engtype = df['enginetype'].unique().tolist()
fuelsys = df['fuelsystem'].unique().tolist()

#Function to model data to fit the model
def transform(data):
    # 数值型幅度缩放
    sc= StandardScaler()

    # 导入模型
    lasso_reg = pickle.load(open('model.pkl','rb'))

    # 新数据Dataframe
    new_df = pd.DataFrame([data],columns = cols)

    # 切分类别型与数值型字段
    cat = []
    num = []
    for col in new_df.columns: 
        if new_df[col].dtypes == 'object': 
            cat.append(col)
        else: 
            num.append(col)

    # 构建模型所需数据格式
    x1_new = pd.get_dummies(new_df[cat], drop_first = False)
    x2_new = new_df[num]
    X_new = pd.concat([x2_new,x1_new], axis = 1)
    
    final_df = pd.DataFrame(columns = cols_to_use)
    final_df = pd.concat([final_df, X_new])
    final_df = final_df.fillna(0)
    final_df = pd.concat([final_df,dummy])

    X_new = final_df.values
    X_new[:, :(len(x1_new.columns))]= sc.fit_transform(X_new[:, :(len(x1_new.columns))])
    print(X_new[-1].reshape(-1, 1))
    output = lasso_reg.predict(X_new[-1].reshape(1, -1))
    return "The price of the car " + str(round(np.exp(output)[0],2)) + "$"

# 预估价格的主函数
def predict_price(car, fueltype, aspiration, doornumber, carbody, drivewheel, enginelocation, wheelbase, carlength, carwidth, 
                carheight, curbweight, enginetype, cylindernumber, enginesize, fuelsystem, boreratio, horsepower, citympg, highwaympg): 

    new_data = [car.lower(), fueltype.lower(), asp[aspiration], doornumber.lower(), carbody, drivew[drivewheel], enginelocation.lower(),
                wheelbase, carlength, carwidth, carheight, curbweight, enginetype, cylnum[cylindernumber], enginesize, fuelsystem, 
                boreratio, horsepower, citympg, highwaympg]
    
    return transform(new_data) 


car = gr.Dropdown(label = "Car brand", choices=carNameCap)

fueltype = gr.Radio(label = "Fuel Type", choices = fuelCap)

aspiration = gr.Radio(label = "Aspiration type", choices = ["Standard", "Turbo"])

doornumber = gr.Radio(label = "Number of doors", choices = ["Two", "Four"])

carbody = gr.Dropdown(label ="Car body type", choices = carb)

drivewheel = gr.Radio(label = "Drive wheel", choices = ['Rear wheel drive', 'Front wheel drive', '4 wheel drive'])

enginelocation = gr.Radio(label = "Engine location", choices = ['Front', 'Rear'])

wheelbase = gr.Slider(label = "Distance between the wheels on the side of the car (in inches)", minimum = 50, maximum = 300)

carlength = gr.Slider(label = "Length of the car (in inches)", minimum = 50, maximum = 300)

carwidth = gr.Slider(label = "Width of the car (in inches)", minimum = 50, maximum = 300)

carheight = gr.Slider(label = "Height of the car (in inches)", minimum = 50, maximum = 300)

curbweight = gr.Slider(label = "Weight of the car (in pounds)", minimum = 500, maximum = 6000)

enginetype = gr.Dropdown(label = "Engine type", choices = engtype)

cylindernumber = gr.Radio(label = "Cylinder number", choices = [2, 3, 4, 5, 6, 8, 12])

enginesize = gr.Slider(label = "Engine size (swept volume of all the pistons inside the cylinders)", minimum = 50, maximum = 500)

fuelsystem = gr.Dropdown(label = "Fuel system (link to ressource: ", choices = fuelsys)

boreratio = gr.Slider(label = "Bore ratio (ratio between cylinder bore diameter and piston stroke)", minimum = 1, maximum = 6)

horsepower = gr.Slider(label = "Horse power of the car", minimum = 25, maximum = 400)

citympg = gr.Slider(label = "Mileage in city (in km)", minimum = 0, maximum = 100)

highwaympg = gr.Slider(label = "Mileage on highway (in km)", minimum = 0, maximum = 100)

Output = gr.Textbox()

app = gr.Interface(title="Predict the price of a car based on its specs", 
                    fn=predict_price,
                    inputs=[car,
                            fueltype,
                            aspiration,
                            doornumber,
                            carbody,
                            drivewheel, 
                            enginelocation, 
                            wheelbase,
                            carlength, 
                            carwidth, 
                            carheight, 
                            curbweight,
                            enginetype, 
                            cylindernumber, 
                            enginesize,
                            fuelsystem,
                            boreratio,
                            horsepower, 
                            citympg, 
                            highwaympg
                            ],
                    outputs=Output)

app.launch()

最终的应用结果如下,可以自己勾选与填入特征进行模型预估!

参考资料

/div>

kaggle项目:二手车价格预测 二手车价格回归目标项目简述文件描述和字段字典文件描述字段字典项目开始分割线导入第三方库读取数据构建模型总结数据来源:数据处理:模型构建:模型评估:结果应用:写在最后目标二手车价格预测项目的目标是构建一个能够准确预测二手车市场价格的模型。这有助于消费者、经销商和金融机构在交易过程中做出更明智的决策。项目简述本次项目主要是针对... 阅读详情

相关推荐

【大数据】—二手车用户数据可视化分析案例

Sales_ID(销售ID)name(二手车名称)year(购车年份)selling_price(二手车当前销售价格)km_driven(总行驶公里数)Region(使用地区)State or Province(使用的州或省)City(使用城市)fuel(燃料类型)seller_type(谁在出售汽车)transmission(汽车的变速器类型)owner(业主类型)mileage(汽车行驶里程)engine(发动机功率)

2202_76035290的博客 4033

Python【二手车价格预测案例】数据挖掘

Python二手车价格预测案例数据挖掘

ayaishere_的博客 7443

Car_Price_Prediction:从Kaggle下载汽车价格预测数据集

汽车价格预测 车价预测数据集可从Kaggle下载

WebAI.js:一个简单的网页前端 AI 模型部署工具

简单介绍 AI 模型网页前端部署工具 WebAI.js

jm_12138的博客 7367

DeepLearning

#1此作业由5个小型作业组成,其中: 2二进制分类作业 2回归作业 1多类分类作业 提交这些作业要遵循的步骤: 在不同的笔记本上执行上述所有任务。 将所有分配放在单个存储库中。 这次共享您的存储库链接,而不是您分配的特定笔记本链接。 填写以下表格以提交作业: 表单链接: :

基于机器学习的二手车交易价格预测算法完整源码+说明.zip

【资源说明】 1、该资源内项目代码都是经过测试运行成功,功能正常的情况下才上传的,请放心下载使用。 2、适用人群:主要针对计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、数学、电子信息等)的同学或企业员工下载使用,具有较高的学习借鉴价值。 3、不仅适合小白学习实战练习,也可作为大作业、课程设计、毕设项目、初期项目立项演示等,欢迎下载,互相学习,共同进步!

统计分析——回归分析

在大数据分析中,回归分析是一种预测性的建模技术,它研究的是因变量(目标)和自变量(预测器)之间的关系。这种技术通常用于预测分析,时间序列模型以及发现变量之间的因果关系。

Eric005的博客 2万+

2021-10-29 atcoder ABC157——B - Bingo

B - Bingo 先标记,然后暴力判断,这样最清晰最好想。 #include<iostream> #include<algorithm> #include<cstring> using namespace std; typedef long long LL; int a[110][110],b[110]; int main() { for(int i=1;i<=3;i++) for(int j=1;j<=3;j++) cin>>a[i]

honeistbutter的博客 337

【机器学习项目】使用 PyTorch 预测汽车价格(详细报告+代码详解)

本实验旨在使用PyTorch构建一个预测汽车价格的模型。通过训练一个深度神经网络模型,我们可以利用汽车的各种特征(如品牌、型号、年份、里程数等)来预测汽车的价格。这将为汽车制造商和消费者提供一个有价值的工具,帮助他们做出更准确的定价和购买决策。

m0_51118916的博客 5696

C/C++ 计算程序运行的时间

C/C++计算程序执行时间的方法,精度依次增加,推荐度也依次增加 1.#include <time.h> clock_t start, finish; double process_interval ; start=clock(); process(); //要计时的程序 finish=clock(); process_interval =(double)(finish-star...

stu_shanghui的博客 1020

零基础小白Coze知识普及【新手必备资料!!】

AI智能体|扣子(Coze)工作流搭建【零基础小白Coze知识普及】 1、领取100+工作流源码!复制到扣子即可直接使用 2、AI认知+9节商业智能体拆解 3、500+各行业高质量提示词 4、超低价格使用即梦文生图图生视频和banana生图

Zhima0522的博客 3250

【数据挖掘】汽车交易价格预测详细版本

汽车交易价格预测是一个典型的回归问题,可以使用多种模型融合技术来提高预测精度。下面我将详细介绍几种常见的模型融合方法,包括Stacking、Blending、Bagging和Boosting。在选择模型融合方法时,需要根据实际情况选择合适的方法,并通过交叉验证等方式来评估模型的性能。

Fanjufei的博客 657

S7-1200 Modbus TCP客户端配置实战:从基础设置到数据交互详解

本文详细介绍了S7-1200 Modbus TCP客户端的配置方法,从基础设置到数据交互的完整流程。涵盖硬件准备、TIA Portal配置、MB_CLIENT指令参数详解、数据缓冲区管理及实战测试,帮助工程师快速掌握西门子PLC与Modbus TCP通信的关键技术。

fire9的博客 311

数据挖掘:汽车车交易价格预测(测评指标;EDA)

比赛要求参赛选手根据给定的数据集,建立模型,二手汽车的交易价格。来自 Ebay Kleinanzeigen 报废的二手车,数量超过 370,000,包含 20 列变量信息,为了保证比赛的公平性,将会从中抽取 10 万条作为训练集,5 万条作为测试集 A,5 万条作为测试集B。同时会对名称、车辆类型、变速箱、model、燃油类型、品牌、公里数、价格等信息进行脱敏。一般而言,对于数据在比赛界面都有对应的数据概况介绍(匿名特征除外),说明列的性质特征。了解列的性质会有助于我们对于数据的理解和后续分析。

m0_62237233的博客 2719

ASReview:基于主动学习的AI文献筛选工具,提升科研效率

主动学习是机器学习的一个重要分支,其核心原理是让算法能够主动选择最有价值的数据进行标注,从而以更低的成本获得更好的模型性能。这一技术通过人机协作的闭环流程,显著提升了数据标注和模型训练的效率和精度。在工程实践中,主动学习尤其适用于数据标注成本高昂或数据类别不平衡的场景,例如医学影像分析、自然语言处理中的文本分类以及推荐系统的冷启动问题。通过优先标注模型最不确定的样本,它能够有效解决传统机器学习面临的冷启动和数据稀疏性挑战。本文聚焦的ASReview项目,正是将主动学习原理应用于系统文献综述这一具体场景,通过

weixin_28725959的博客 432

基于任务的后勤智能体:三段构建与演进设计探究

这是系统智能化的核心难点。例如,对于一个“加强连级滩头阵地防御”子任务,系统会根据防御时长、预期敌军攻击强度、地形等因素,计算出所需的弹药(不同弹种的具体数量)、构筑工事的器材、人员的给养和饮水量、以及医疗救护的药品和血包数量。首先进行分词、词性标注等基础处理,然后利用在军事语料库上训练的命名实体识别(NER)模型,提取出关键实体,如任务类型(“夺控作战”)、作战对象(“Y岛”)、时间约束(“D日H时”、“24小时内”)、成功标准(“建立稳固滩头阵地”)、保障重点(“弹药充足”、“及时救治”)等。

weixin_49042442的博客 1088

汽车价格预测回归分析模型

回归分析案例:使用python的sklearn库对汽车历史价格信息进行回归分析,包括数据预处理、特征相关性分析等步骤,最后利用lasso回归建立价格预测模型。

WHYbeHERE的博客 9814

【LCMM实战指南】从增长混合模型到潜在类别轨迹分析的纵向数据建模

本文深入解析了LCMM(潜在类别混合模型)在纵向数据建模中的应用,对比了LCGA与GMM的核心差异与选择策略。通过R语言lcmm包的实战演练,详细展示了从数据模拟、模型拟合、类别数选择到结果解读的全流程,为识别数据中不同的发展轨迹亚型提供了系统指南。

weixin_29070861的博客 380

Html+JavaScript+Css 二手车价格评估系统设计开发

基于VSCode开发的html + JavaScript + css网页,简单的一个基于重置成本法的二手车价格评估系统。

寒木休思的博客 4492

Dify智能体开发:大语言模型(LLM)问题分类

通过定义分类描述,问题分类器能够根据用户输入,使用 LLM 推理与之相匹配的分类并输出分类结果,向下游节点提供更加精确的信息。

王国平的博客 2249

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

基于机器学习的二手车价格预测及应用实现(预测系统实现)

随着中国汽车工业的迅速发展,国内的汽车数量也在迅速增长。新车销售市场已经逐渐饱和,而二手车交易市场正在兴起。但是,由于中国的二手车市场尚未成熟,与发达国家相比仍存在较大差距。其中一个重要原因是二手车的市场价格难以准确评估和设定,而且目前国内缺乏权威的评估机构和国家统一的二手车资产价值评估标准。因此,通过对二手车交易数据的分析和建立二手车零售交易价格预测模型具有重要意义。

haosen 5585

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

计算机毕业设计之java+javaweb的二手车估值与销售网络平台

随着信息化时代的到来,管理系统都趋向于智能化、系统化,二手车估值与销售网络平台也不例外,但目前国内仍都使用人工管理,市场规模越来越大,同时信息量也越来越庞大,人工管理显然已无法应对时代的变化,而二手车估值与销售网络平台能很好地解决这一问题,轻松应对二手车交易平时的工作,既能提高人力物力财力,又能加快工作的效率,取代人工管理是必然趋势。本二手车估值与销售网络平台以springboot作为框架,b/s模式以及MySql作为后台运行的数据库,同时使用Tomcat用为系统的服务器。...

qq_1262330535的博客 573

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

使用Python机器学习预测汽车价格!

大家好,我是小F~前不久湖北推出大幅购车优惠政策,开启了“史上最强”的汽车补贴。一辆21万的B级燃油车最高降价9万,只需要12万多点就能拿下来了。也是带动了其他汽车厂商的降价,超30个汽车品牌加入降价大军。对于汽车价格,Python也是可以应用上的,比如基于Python机器学习的汽车价格预测。当然上面这种大降价的情况应该是不考虑在内的~汽车价格取决于很多因素,比如汽车品牌的知名度、汽车的功能(有无...

法纳斯特 2429

kaggel-汽车价格预测项目

可以看到在Levy中‘-’有5819条记录,Engine volume这个特征有些带有单位Turbo,Doors特征带有特殊英文和大于号,Mileage特征带有km单位,Prod. year 特征代表的是汽车是哪一年生产的,需要根据这个计算汽车的已经使用了多少年。我们将在接下来的数据清洗步骤,解决这些问题。

Liuyan_analysis的博客 533

二手车数据集分享,包含 7,400 个列表和 29 个用于价格预测和分析的功能

数据集源地址:https://www.kaggle.com/datasets/vrajesh0sharma7/used-car-price-prediction在数据分析与机器学习的世界里,高质量的数据集是探索问题、验证思路的重要基石。今天要为大家介绍的,是Kaggle平台上一份极具价值的印度二手车数据集——Used Car Price Prediction Dataset,无论是数据爱好者、学生,还是从事汽车行业数据分析的从业者,都能从中挖掘出丰富的信息与实用价值。

2401_87245171的博客 1216
上一篇: 掌握这9个单行代码技巧!你也能写出『高端』Python代码 ⛵
下一篇: 看看你离世界一流大厂有多远?3道Google最新SQL面试题 ⛵
ShowMeAI
博客等级 码龄5年 6514粉丝 672原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ShowMeAI

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值