Python 随机森林实战:预测用户购车意向
这次我们用 scikit-learn 里的随机森林分类器,完整做一遍'用户购车意向预测'。从数据读取、特征编码,到模型训练、评估和新样本预测,流程都尽量按真实项目的节奏来走。
随机森林适合这类分类任务:它通过多棵决策树的随机采样和投票机制,通常比单棵树更稳,不容易过拟合;同时也能比较自然地处理已经编码后的类别特征。对于这份只有 30 条样本的小数据,它不一定能给出很高的准确率,但足够把一套标准机器学习流程跑通,也方便我们观察特征和结果之间的关系。
项目背景与数据说明
使用的数据集是 ods_bye_car_info.csv,总共 30 条用户记录,字段如下:
- 特征列:
age(年龄)、gender(性别)、annual_income(年收入)、marital_status(婚姻状况) - 标签列:
buy_car_sign(是否购车,取值为'是 / 否')
环境准备
先导入后面会用到的库:数据处理、编码、划分训练集,以及随机森林和分类评估。
import numpy as np
import pandas as pd
from sklearn import preprocessing
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import classification_report
加载数据并初步查看
先把 CSV 读进来。这里文件是中文编码,读取时用 gb2312 更稳妥。
data = pd.read_csv('ods_bye_car_info.csv', encoding='gb2312')
data.head(2)
接着看看数据类型和标签分布。info() 可以快速确认有没有缺失值、字段类型是否符合预期;value_counts() 则能看出'是 / 否'样本是否均衡。
data.info()
data['buy_car_sign'].value_counts()
特征预处理:把类别文本转成数值
随机森林本身只能处理数值型数据,所以像 age、gender 这类文本特征,需要先编码。这里用 OrdinalEncoder 把每个类别映射成整数。
x = data[['age', 'gender', 'annual_income', 'marital_status']].values
y = data[].values
encoder = preprocessing.OrdinalEncoder()
encoder.fit(x)


