线性回归 必考
3/5 变体
点击展开 ▾
from sklearn.linear_model import LinearRegression
model = LinearRegression()
model.fit(X_train, y_train)
最基础的回归模型
随机森林回归 必考
2/5 变体
点击展开 ▾
from sklearn.ensemble import RandomForestRegressor
model = RandomForestRegressor(n_estimators=100, random_state=42)
model.fit(X_train, y_train)
100棵决策树的集成回归模型
训练 & 预测 & 得分 必考
5/5 变体
点击展开 ▾
model.fit(X_train, y_train) # 训练
y_pred = model.predict(X_test) # 预测
train_score = model.score(X_train, y_train) # 训练集得分
test_score = model.score(X_test, y_test) # 测试集得分
模型三板斧:训练 → 预测 → 评分
保存模型 (pickle) 必考
4/5 变体
点击展开 ▾
import pickle
# 写法一:with open
with open('model.pkl', 'wb') as f:
pickle.dump(model, f)
把训练好的模型保存到文件。'wb' = 写入二进制
写报告文件 必考
5/5 变体
点击展开 ▾
with open('report.txt', 'w') as f:
f.write(f'训练集得分: {model.score(X_train, y_train)}\n')
f.write(f'测试集得分: {model.score(X_test, y_test)}\n')
f.write(f'均方误差: {mean_squared_error(y_test, y_pred)}\n')
f.write(f'决定系数: {r2_score(y_test, y_pred)}\n')
'w' 清空写入。报告一般包含:训练/测试得分 + MSE + R²
评估指标 必考
5/5 变体
点击展开 ▾
from sklearn.metrics import mean_squared_error, mean_absolute_error, r2_score
mse = mean_squared_error(y_test, y_pred) # 均方误差(越小越好)
mae = mean_absolute_error(y_test, y_pred) # 平均绝对误差
r2 = r2_score(y_test, y_pred) # 决定系数(越接近1越好)
回归三指标:MSE、MAE 越小越好;R² 越接近1越好
哑变量转换 必考
3/5 变体
点击展开 ▾
X = pd.get_dummies(X)
# 或带 drop_first=True 避免共线性
data = pd.get_dummies(data, drop_first=True)
分类变量转数值:如"男/女"变成两列0/1
逻辑回归 高频
1/5 变体
点击展开 ▾
from sklearn.linear_model import LogisticRegression
model = LogisticRegression(max_iter=1000)
model.fit(X_train, y_train)
分类模型;max_iter=1000 增加迭代次数避免不收敛
分类报告 高频
1/5 变体
点击展开 ▾
from sklearn.metrics import classification_report
report = classification_report(y_test, y_pred, zero_division=1)
# 计算准确率
accuracy = (y_test == y_pred).mean()
详细分类指标报告;zero_division=1 避免除零警告
决策树回归 常考
1/5 变体
点击展开 ▾
from sklearn.tree import DecisionTreeRegressor
model = DecisionTreeRegressor(random_state=42)
单棵决策树回归模型
XGBoost 回归 高频
2/5 变体
点击展开 ▾
import xgboost as xgb
model = xgb.XGBRegressor(n_estimators=100, learning_rate=0.05,
max_depth=5, random_state=42)
梯度提升树;参数:树数量、学习率、最大深度
Pipeline 管道 常考
1/5 变体
点击展开 ▾
from sklearn.pipeline import Pipeline
pipeline = Pipeline([
('scaler', StandardScaler()),
('linreg', LinearRegression()) # ← 注意带括号 ()
])
串联多个步骤。⚠️ 每个模型都要带括号 () 实例化
SMOTE 过采样 常考
1/5 变体
点击展开 ▾
from imblearn.over_sampling import SMOTE
smote = SMOTE(random_state=42)
X_resampled, y_resampled = smote.fit_resample(X_train, y_train)
对少数类过采样,平衡不均衡数据
保存模型 (joblib) 常考
1/5 变体
点击展开 ▾
import joblib
joblib.dump(model, 'model.pkl')
另一种保存模型的方式,和 pickle 类似
保存预测结果 必考
5/5 变体
点击展开 ▾
# 方式一:CSV
pd.DataFrame(y_pred, columns=['预测结果']).to_csv('results.txt', index=False)
# 方式二:带实际值,TSV
pd.DataFrame({'实际值': y_test, '预测值': y_pred}).to_csv('results.txt', index=False, sep='\t')
保存预测结果到文件;sep='\t' 用制表符分隔
清洗字符串数据 常考
1/5 变体
点击展开 ▾
# 去除所有字符串单元格的前后空格
df = df.applymap(lambda x: x.strip() if isinstance(x, str) else x)
# 用 apply 提取字符串中的数值
y = df['列名'].apply(lambda x: int(x.split(' ')[0]))
applymap 处理每个单元格;apply + split 从字符串提取数值