- 博客(19)
- 收藏
- 关注
原创 Day_18
f"eps={eps:.1f}, min_samples={min_samples}, 簇数: {n_clusters}, 噪声点: {n_noise}, 无法计算评估指标")若X_scaled形状为(n_samples, n_features),则 X_scaled[mask]形状为(n_valid_samples, n_features),print(f"eps={eps:.1f},min_samples={min_samples},簇数:{n_clusters},噪声点:{n_noise}"
2025-05-10 16:00:00
503
原创 Day_17 无监督算法中的聚类
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) # 80%训练集,20%测试集。print(f"k={k},惯性:{kmeans.inertia_:.2f},轮廓系数:{silhouette:.3f},CH指数:{ch:.3f},DB指数:{dh:.3f}")# 返回值:kmeans_labels是一维数组,存储每个样本的簇索引(如[0, 1, 0, 2, ...])。
2025-05-09 22:56:41
975
原创 Day_16 numpy库与shap值的深入理解
shap.summary_plot(shap_values[:, :, 0], X_test, plot_type="bar",show=False) # 这里的show=False表示不直接显示图形,这样可以继续用plt来修改元素,不然就直接输出了。X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) # 80%训练集,20%测试集。
2025-05-08 04:15:00
721
原创 DAY 14 SHAP图介绍
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) # 80%训练集,20%测试集。列表的第`k`个元素是一个`(n_samples, n_features)`的数组,表示所有样本的所有特征对预测**类别`k`**的贡献。因此,对`n_samples`个样本中的**每一个**,**分别为每个类别**计算`n_features`个特征的SHAP值。
2025-05-07 11:44:00
560
原创 Day_13 不平衡数据集的处理
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) # 80%训练集,20%测试集。X_train_ros, y_train_ros = ros.fit_resample(X_train, y_train) # 对训练集进行随机过采样。rf_model_smote.fit(X_train_smote, y_train_smote) # 使用随即过采样之后的训练集进行训练。
2025-05-06 21:55:15
630
原创 Day_12 超参数调整2
轮盘赌选择方法根据每个染色体的适应度占总适应度的比例来确定其被选中的概率,适应度越高的染色体被选中的概率越大。>遗传算法(Genetic Algorithm,GA)是一种受生物进化过程启发的优化搜索算法,它模拟了自然选择和遗传机制,通过迭代的方式逐步寻找问题的最优解。> - 将问题的解空间转换为染色体(个体)的编码空间,每个染色体代表问题的一个可能解。> - 对选择出来的父代染色体进行交叉操作,生成新的子代染色体。交叉操作模拟了生物的基因交换过程,通过交换父代染色体的部分基因,产生新的解。
2025-05-03 04:20:45
481
原创 Day_12 超参数调整2
遗传算法(Genetic Algorithm,GA)是一种受生物进化过程启发的优化搜索算法,它模拟了自然选择和遗传机制,通过迭代的方式逐步寻找问题的最优解。return bin(x)[2:].zfill(5) # 5 位二进制编码。print(f"最优值: f(x) = {best_fitness}”)print(f"最优解: x = {best_solution}“)三种启发式算法的示例代码:遗传算法、粒子群算法、退火算法。#选择操作(轮盘赌选择)
2025-05-03 04:18:12
924
原创 Day_11 超参数调整专题
例如,"Annual Income"、"Years of Credit History"、"Credit Score"等特征的取值范围差异较大,可通过特征缩放将它们的取值范围统一到[0, 1]或均值为0、标准差为1的分布上。如果有一定的顺序关系,如"Term"的"Short Term"和"Long Term",可以考虑标签编码。例如,可以计算"Debt-to-Income Ratio"(负债收入比),即"Monthly Debt"与"Annual Income"的比值,来反映客户的债务负担情况。
2025-05-02 14:14:16
720
原创 Day_10_复现
print(f"训练集特征的形状{X_train.shape},训练集标签的形状{y_train.shape},测试集特征的形状{X_test.shape},测试集标签的形状{y_test.shape}")svm_model = SVC(random_state=42) # 采用random_state=42的随机数种子,便于复现,其他的内参采用默认参数。# 训练集特征的形状(6000, 30),训练集标签的形状(6000,),测试集特征的形状(1500, 30),测试集标签的形状(1500,)
2025-05-02 06:12:08
804
原创 Day_10
例如,"Annual Income"、"Years of Credit History"、"Credit Score"等特征的取值范围差异较大,可通过特征缩放将它们的取值范围统一到[0, 1]或均值为0、标准差为1的分布上。如果有一定的顺序关系,如"Term"的"Short Term"和"Long Term",可以考虑标签编码。例如,可以计算"Debt-to-Income Ratio"(负债收入比),即"Monthly Debt"与"Annual Income"的比值,来反映客户的债务负担情况。
2025-04-30 00:39:09
503
原创 Day_9 热力图和子图的绘制
print(data["Years in current job"].isnull().sum()) # 0 表明已经不存在空值Nan了。print(data[continuous_list]) # 返回的是由continuous_list列表中的列构成的dataFrame。dropna()是pandas的Series或DataFrame对象的一个方法,其作用是移除数据中的缺失值(NaN)。print(data["Years in current job"].head()) # 检查映射后的结果。
2025-04-29 01:14:08
921
原创 Day_8 初识字典、标签编码和连续数据的处理
StandardScaler的fit_transform方法要求输入是一个二维数组,而Pandas的DataFrame恰好符合这个要求,其形状应为(n_samples, n_features),其中n_samples是样本数量,n_features是特征数量。相比之下,Series是一维的数据结构,不满足fit_transform方法的输入要求。# Term列的取值是字符串,需要将取值的类型,有字符串变为数值类型,故进行标签编码的操作。这样做的目的是将不同特征的数据缩放到相同的尺度,
2025-04-28 00:46:12
407
原创 Day_7 针对心脏病项目的数据集来完成数据的预处理
data = pd.get_dummies(data, columns=discrete_list, drop_first=True) # drop_first删除独热编码后的第一行,确保独热编码后的自由度。print(data.isnull().sum()) # 计算出每列的空值情况。print(data.isnull().sum()) # 计算出每列的空值情况。print(len(data.columns)) # 查看独热编码后的列数。print(f"离散变量有{discrete_list}")
2025-04-27 01:52:20
869
原创 Day_6 matplotlib与seaborn库:数据初步可视化
data["Open Accounts Group"] = pd.cut(data["Number of Open Accounts"], bins=[0, 5, 10, 15, 20, float('inf')], labels=['0-5', '6-10', '11-15', '16-20', '20+']) # 根据你的数据调整分组)labels=['0 - 5', '6 - 10', '11 - 15', '16 - 20', '20+']:labels 参数为每个区间提供了对应的标签。
2025-04-26 02:11:06
684
原创 Day_5
get_dummies(data, columns = discrete_list, drop_first = True, dtype = int) data:表示待处理的数据集。print(data.columns) # 显示所有列名,<class 'pandas.core.indexes.base.Index'>print(data.isnull().sum()) # 统计每一列的Nan空值的数量。# print(data.head()) # 独热编码产生的列的属性为bool类型。
2025-04-25 02:30:00
243
原创 Day_4
按照示例代码的要求,去尝试补全信贷数据集中的数值型缺失值。1.打开数据(csv文件、excel文件)2.查看数据(尺寸信息、查看列名等方法)### 初识pandas库与缺失数据的补全。5.利用循环补全所有列的空值。4.众数、中位数填补空值。
2025-04-24 08:45:00
197
原创 Day_3
1. 创建一个包含三个字符串元素的列表 tech_list,元素分别为 “Python”, “Java”, “Go”。>4. 修改 tech_list 中的第二个元素(索引为 1),将其从 “Java” 更改为 “Ruby”。>6. 计算当前 tech_list 的长度,并将结果存储在变量 current_length 中。print(f"最终列表的内容:{tech_list}") # 可以直接打印整个列表。print(f"列表中的第一个技术:{tech_list[0]}")
2025-04-23 10:15:00
401
原创 DAY_2
比较 score_a 是否大于 score_b,将比较结果(布尔值)存储在变量 is_a_higher 中;比较 score_a 是否小于等于 score_b,将结果存储在变量 is_a_lower_or_equal 中;比较 score_a 是否不等于 score_b,将结果存储在变量 is_different 中。print(f"75是否小于等于90:{is_a_lower_or_equal}")print(f"75是否大于90:{is_a_higher}")>75 是否大于 90: False。
2025-04-22 02:15:00
157
原创 DAY_1
-题目: 创建两个变量:name 存储你的名字(字符串,例如 "小明"),city 存储你所在的城市(字符串,例如 "北京")。# 基本语法:在字符串前添加f或者F前缀,在字符串里用{}包裹表达式,Python会在运行时计算表达式的值,并把结果插入到字符串对应位置。print(f"今天的日期是{today:%Y-%M-%D %H:%M:%S}")print(f"姓名:\"{name}\",城市:\"{city}\"")print(f'姓名:"{name}",城市:"{city}"')
2025-04-21 01:48:50
409
1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人