浙大疏锦行一、知识点1.1 数据预处理1.1.1 导入所需要的包(边写代码边添加包)import pandas as pd #用于数据处理和分析可处理表格数据 import numpy as np #用于数值计算提供高效数组操作 import matplotlib.pyplot as plt #用于绘制各类图表 import seaborn as sns #基于matplotlib的绘图库绘制更美观 import warnings warnings.filterwarnings(ignore) #设置中文字体解决中文显示问题 plt.rcParams[font.sans-serif] [SimHei] # Windows系统常用黑体字体 plt.rcParams[axes.unicode_minus] False # 正常显示负号1.1.2查看数据datapd.read_csv(r文件地址)data.head()1.1.3特征名映射mapping{Term:期限}datadata.rename(columnsmapping)1.1.4删除无用列datadata.drop(column[ID])data.head()1.1.5编码映射两种标签编码方式方法一使用map():未匹配转化为NANmapping { Term: { Short Term: 1, Long Term: 0 }, Home Ownership: { Rent: 0, Own Home: 1, Have Mortgage : 2, Home Mortgage: 3 } } data[Term]data[Term].map(mapping[Term])方法二使用replace():未匹配则静默跳过mapping { Term: { Short Term: 1, Long Term: 0 }, Home Ownership: { Rent: 0, Own Home: 1, Have Mortgage : 2, Home Mortgage: 3 } } datadata.replace(mapping)1.1.6填补缺失值#确定需要填充的列 data.isnull().sum() missing_cols [ 年收入, 当前工作年限 ] #使用众数填充缺失值 for col in missing_cols: #可能存在多个众数这里取第一个 mode_valdata[col].mode()[0] data[col].fillna(mode_val,inplaceTrue)1.1.7异常值处理异常值可处理可不处理不处理也会增强泛化性和鲁棒性异常值一般不处理或者结合对照试验处理和不处理都要尝试一下# 1. 绘制箱线图观察异常值 plt.figure(figsize(8,6)) sns.boxplot(xdata[年收入]) plt.title(年收入箱线图) plt.xlabel(年收入) plt.show() # 2.计算Q1下四分位数、Q3上四分位数、IQR四分位距离 Q1data[column_name].quantile(0.25) Q3data[column_name].quantile(0.75) IQRQ3-Q1 #3.确定异常值边界 lower_boundQ1-1.5*IQR upper_boundQ3-1.5*IQR #4.筛选数据保存边界内的数据 data_before_drop len(data) data_filtered data[ (data[column_name] lower_bound) (data[column_name] upper_bound) ].copy() # 使用 .copy() 避免 SettingWithCopyWarning # 5. 更新 DataFrame 并报告结果 data data_filtered data_after_drop len(data) rows_dropped data_before_drop - data_after_drop print(f\n原始数据行数: {data_before_drop}) print(f删除异常值后行数: {data_after_drop}) print(f共删除异常值 (行): {rows_dropped}) print(f\nDataFrame 已更新{column_name} 的异常值已被移除。)1.1.8可视化部分1.1.9其他核心部分特征工程1.2机器学习模型建模数据划分、数据归一化、模型训练与评估
DAY 11 机器学习建模与评估
浙大疏锦行一、知识点1.1 数据预处理1.1.1 导入所需要的包(边写代码边添加包)import pandas as pd #用于数据处理和分析可处理表格数据 import numpy as np #用于数值计算提供高效数组操作 import matplotlib.pyplot as plt #用于绘制各类图表 import seaborn as sns #基于matplotlib的绘图库绘制更美观 import warnings warnings.filterwarnings(ignore) #设置中文字体解决中文显示问题 plt.rcParams[font.sans-serif] [SimHei] # Windows系统常用黑体字体 plt.rcParams[axes.unicode_minus] False # 正常显示负号1.1.2查看数据datapd.read_csv(r文件地址)data.head()1.1.3特征名映射mapping{Term:期限}datadata.rename(columnsmapping)1.1.4删除无用列datadata.drop(column[ID])data.head()1.1.5编码映射两种标签编码方式方法一使用map():未匹配转化为NANmapping { Term: { Short Term: 1, Long Term: 0 }, Home Ownership: { Rent: 0, Own Home: 1, Have Mortgage : 2, Home Mortgage: 3 } } data[Term]data[Term].map(mapping[Term])方法二使用replace():未匹配则静默跳过mapping { Term: { Short Term: 1, Long Term: 0 }, Home Ownership: { Rent: 0, Own Home: 1, Have Mortgage : 2, Home Mortgage: 3 } } datadata.replace(mapping)1.1.6填补缺失值#确定需要填充的列 data.isnull().sum() missing_cols [ 年收入, 当前工作年限 ] #使用众数填充缺失值 for col in missing_cols: #可能存在多个众数这里取第一个 mode_valdata[col].mode()[0] data[col].fillna(mode_val,inplaceTrue)1.1.7异常值处理异常值可处理可不处理不处理也会增强泛化性和鲁棒性异常值一般不处理或者结合对照试验处理和不处理都要尝试一下# 1. 绘制箱线图观察异常值 plt.figure(figsize(8,6)) sns.boxplot(xdata[年收入]) plt.title(年收入箱线图) plt.xlabel(年收入) plt.show() # 2.计算Q1下四分位数、Q3上四分位数、IQR四分位距离 Q1data[column_name].quantile(0.25) Q3data[column_name].quantile(0.75) IQRQ3-Q1 #3.确定异常值边界 lower_boundQ1-1.5*IQR upper_boundQ3-1.5*IQR #4.筛选数据保存边界内的数据 data_before_drop len(data) data_filtered data[ (data[column_name] lower_bound) (data[column_name] upper_bound) ].copy() # 使用 .copy() 避免 SettingWithCopyWarning # 5. 更新 DataFrame 并报告结果 data data_filtered data_after_drop len(data) rows_dropped data_before_drop - data_after_drop print(f\n原始数据行数: {data_before_drop}) print(f删除异常值后行数: {data_after_drop}) print(f共删除异常值 (行): {rows_dropped}) print(f\nDataFrame 已更新{column_name} 的异常值已被移除。)1.1.8可视化部分1.1.9其他核心部分特征工程1.2机器学习模型建模数据划分、数据归一化、模型训练与评估