🧩 第一部分:客户细分(信用分类为“差”的群体)

分析流程概述:
1. 数据预处理:筛选信用差(Y=0)的客户,处理缺失值与异常值。
2. 探索性分析(EDA):使用统计图形与表格描述变量分布。
3. 聚类分析:使用无监督学习(如K-means)进行客户细分。
4. 用户画像:对每个细分群体进行特征描述与统计检验。

步骤详解与代码示例(Python)

1. 数据加载与预处理
python
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn.cluster import KMeans
from sklearn.preprocessing import StandardScaler
from scipy.stats import chi2_contingency, f_oneway

# 加载训练集
df_train = pd.read_csv('training.csv')

# 筛选信用差的客户
df_bad = df_train[df_train['Y'] == 0].copy()
```

 2. 探索性分析(以“性别变量 X9”为例)
python
# 绘制条形图
plt.figure(figsize=(8, 5))
sns.countplot(data=df_bad, x='X9')
plt.title('信用差客户中性别分布')
plt.show()

# 制作频数表
freq_table = df_bad['X9'].value_counts().reset_index()
freq_table.columns = ['性别', '频数']
print(freq_table)

# 卡方检验(假设与其他变量如X1交叉)
cross_tab = pd.crosstab(df_bad['X9'], df_bad['X1'])
chi2, p, _, _ = chi2_contingency(cross_tab)
print(f"卡方检验 p-value: {p}")
```

 3. 聚类分析(使用K-means)
```python
# 选择特征(示例使用数值型特征)
features = ['X2', 'X5', 'X8', 'X11', 'X13', 'X16', 'X18']
X = df_bad[features].fillna(df_bad[features].mean())

# 标准化
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)

# 寻找最佳聚类数(肘部法则)
inertia = []
for k in range(2, 6):
    kmeans = KMeans(n_clusters=k, random_state=42)
    kmeans.fit(X_scaled)
    inertia.append(kmeans.inertia_)

plt.plot(range(2, 6), inertia, marker='o')
plt.xlabel('聚类数')
plt.ylabel('SSE')
plt.title('肘部法则')
plt.show()

# 假设选择 k=3
kmeans = KMeans(n_clusters=3, random_state=42)
df_bad['Cluster'] = kmeans.fit_predict(X_scaled)
```

 4. 用户画像与统计检验
```python
# 对每个聚类群体进行描述
cluster_profile = df_bad.groupby('Cluster').agg({
    'X2': 'mean',
    'X5': 'mean',
    'X9': lambda x: x.mode()[0],
    'X12': lambda x: x.mode()[0]
}).round(2)

print(cluster_profile)

# 统计检验:例如年龄(X13)在不同聚类中是否有差异
groups = [group['X13'].values for name, group in df_bad.groupby('Cluster')]
f_stat, p_value = f_oneway(*groups)
print(f"ANOVA p-value for X13: {p_value}")
```

---

🧩 第二部分:分类模型构建与测试

分析流程概述:
1. 数据预处理:处理缺失值、编码分类变量、特征标准化。
2. 特征选择:使用随机森林等模型筛选重要变量。
3. 模型训练:使用分类算法(如随机森林、XGBoost)训练模型。
4. 模型评估:在训练集上计算准确率、精确率等指标。
5. 测试集预测:预测测试集并输出结果。

步骤详解与代码示例(Python)

 1. 数据预处理
```python
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score, classification_report

 加载训练集和测试集
df_train = pd.read_csv('training.csv')
df_test = pd.read_csv('testing.csv')

分离特征与标签
X_train = df_train.drop(['ID', 'Y'], axis=1)
y_train = df_train['Y']
X_test = df_test.drop(['ID', 'Y'], axis=1)  # 测试集可能无Y

处理分类变量:独热编码或标签编码
categorical_cols = ['X1', 'X3', 'X4', 'X6', 'X7', 'X9', 'X10', 'X12', 'X14', 'X15', 'X17', 'X19', 'X20']
X_train_encoded = pd.get_dummies(X_train, columns=categorical_cols)
X_test_encoded = pd.get_dummies(X_test, columns=categorical_cols)

对齐特征(测试集可能缺少某些类别)
X_train_encoded, X_test_encoded = X_train_encoded.align(X_test_encoded, join='left', axis=1, fill_value=0)
```

2. 特征选择(使用随机森林)
```python
# 训练随机森林
rf = RandomForestClassifier(n_estimators=100, random_state=42)
rf.fit(X_train_encoded, y_train)

 特征重要性
feature_importance = pd.DataFrame({
    'feature': X_train_encoded.columns,
    'importance': rf.feature_importances_
}).sort_values('importance', ascending=False)

print(feature_importance.head(10))

可选:选择前N个特征
selected_features = feature_importance.head(15)['feature'].values
X_train_selected = X_train_encoded[selected_features]
X_test_selected = X_test_encoded[selected_features]
```

 3. 模型训练与评估
```python
分割训练集用于验证
X_tr, X_val, y_tr, y_val = train_test_split(X_train_selected, y_train, test_size=0.2, random_state=42)

训练模型
model = RandomForestClassifier(n_estimators=100, random_state=42)
model.fit(X_tr, y_tr)

验证集预测
y_pred_val = model.predict(X_val)

评估指标
print("验证集准确率:", accuracy_score(y_val, y_pred_val))
print(classification_report(y_val, y_pred_val))
```

4. 测试集预测与输出
```python
预测测试集
y_pred_test = model.predict(X_test_selected)

生成提交格式
submit_df = pd.DataFrame({
    '测试集样本编号': df_test['ID'],
    '信用分类(是否有风险,是=1,否=0)': y_pred_test
})

保存为CSV
submit_df.to_csv('预测结果.csv', index=False)

print(submit_df.head())
```

---

📦 结果提交格式

一、文档中应包含:
 客户细分的分析过程、聚类结果、用户画像(图形+表格+统计检验)。
-分类模型的构建过程、特征重要性、模型评估指标。

 二、预测结果文件(例如 `预测结果.csv`):

| 测试集样本编号 | 信用分类(是否有风险,是=1,否=0) |
|----------------|-----------------------------------|
| 1              | 1                                 |
| 2              | 0                                 |
| ...            | ...                               |

---

更多推荐