《Python 数据统计完全指南:从数据预处理到统计建模的全流程实战》
·
Python 数据统计全流程实战指南
本指南将系统化演示从数据预处理到统计建模的完整流程,结合Python工具链实现每个环节的实战操作。所有代码均基于pandas、scikit-learn等主流库,确保可复现性。
1. 数据预处理
核心任务:清洗原始数据并转换为可分析格式
import pandas as pd
import numpy as np
# 加载数据
data = pd.read_csv('dataset.csv')
# 缺失值处理
data.fillna(data.mean(), inplace=True) # 数值型用均值填充
data['category'].fillna(data['category'].mode()[0], inplace=True) # 分类型用众数填充
# 异常值处理
Q1 = data['value'].quantile(0.25)
Q3 = data['value'].quantile(0.75)
IQR = Q3 - Q1
data = data[~((data['value'] < (Q1 - 1.5 * IQR)) | (data['value'] > (Q3 + 1.5 * IQR)))]
# 特征标准化
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
data[['feature1','feature2']] = scaler.fit_transform(data[['feature1','feature2']])
2. 探索性数据分析 (EDA)
通过可视化与统计量理解数据分布
import matplotlib.pyplot as plt
import seaborn as sns
# 数值特征分布
plt.figure(figsize=(12,6))
sns.histplot(data['target'], kde=True)
plt.title('目标变量分布')
plt.show()
# 分类特征分析
cross_tab = pd.crosstab(data['category'], data['label'])
sns.heatmap(cross_tab, annot=True, fmt='d')
# 相关性矩阵
corr_matrix = data.corr()
sns.heatmap(corr_matrix, annot=True, cmap='coolwarm')
3. 统计建模
3.1 线性回归模型
建立变量间的线性关系: $$y = \beta_0 + \beta_1x_1 + \beta_2x_2 + \cdots + \beta_nx_n + \epsilon$$
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split
# 划分数据集
X = data.drop('target', axis=1)
y = data['target']
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
# 模型训练
model = LinearRegression()
model.fit(X_train, y_train)
# 评估指标
from sklearn.metrics import r2_score, mean_squared_error
y_pred = model.predict(X_test)
print(f"R²: {r2_score(y_test, y_pred):.3f}")
print(f"RMSE: {np.sqrt(mean_squared_error(y_test, y_pred)):.2f}")
3.2 逻辑回归模型
解决分类问题,使用sigmoid函数: $$P(y=1) = \frac{1}{1 + e^{-(\beta_0 + \beta_1x_1 + \cdots + \beta_nx_n)}}$$
from sklearn.linear_model import LogisticRegression
# 二分类场景
clf = LogisticRegression(max_iter=1000)
clf.fit(X_train, y_train_binary)
# 输出特征重要性
pd.Series(clf.coef_[0], index=X.columns).sort_values().plot(kind='barh')
4. 模型优化与验证
# 交叉验证
from sklearn.model_selection import cross_val_score
scores = cross_val_score(model, X, y, cv=5, scoring='r2')
print(f"交叉验证R²均值: {scores.mean():.3f}")
# 特征工程
from sklearn.feature_selection import RFE
selector = RFE(estimator=model, n_features_to_select=5)
selector.fit(X, y)
selected_features = X.columns[selector.support_]
5. 结果可视化
# 回归残差分析
residuals = y_test - y_pred
plt.scatter(y_pred, residuals)
plt.axhline(y=0, color='r', linestyle='-')
plt.xlabel('预测值')
plt.ylabel('残差')
plt.title('残差分布图')
# ROC曲线(分类模型)
from sklearn.metrics import roc_curve
fpr, tpr, thresholds = roc_curve(y_test, clf.predict_proba(X_test)[:,1])
plt.plot(fpr, tpr)
plt.plot([0,1],[0,1],'k--')
plt.xlabel('假阳性率')
plt.ylabel('真阳性率')
通过上述流程,可系统化完成数据统计任务,实际应用时需根据业务场景调整预处理策略和模型选择。关键点在于:
- 数据质量决定模型上限
- 模型复杂度需与数据规模匹配
- 持续验证防止过拟合
更多推荐
所有评论(0)