96SEO 2026-02-20 09:07 5
sklearn.model_selection包含模型选择的多种方法如交叉验证

sklearn.metrics包含评估模型性能的多种指标提供如accuracy_score这样的方法
sklearn.feature_extraction.text提供将文本转换为特征向量的TF-idf向量化器
sys与Python解释器密切相关的模块和由解释器使用或维护的变量和函数
sklearn.feature_extraction.text
warnings.filterwarnings(ignore)
pd.read_excel(./dataset-new/traindata-new.xlsx)
pd.read_excel(./dataset-new/testdata-new.xlsx)#
定义了一个空列表drop_cols用于存储在测试数据集中非空值小于10个的列名。
使用drop方法从训练集和测试集中删除了这些列以避免在后续的分析或建模中使用这些包含大量缺失值的列
使用pd.concat将清洗后的训练集和测试集合并成一个名为data的DataFrame便于进行统一的特征工程处理
data.columns[2:]除此之外数据预处理可以使用数据增强、数据清洗、手动扩充等方法。
将SMILES转换为分子对象列表,并转换为SMILES字符串列表
tfidf.fit_transform(data[smiles_list])#
data[data.Label.notnull()].reset_index(dropTrue)
data[data.Label.isnull()].reset_index(dropTrue)#
train[Label].astype(int)特征工程是构建一个良好的机器学习模型的关键步骤。
有用的特征使得模型表现更好。
在这个特征工程中使用了具有关键特征的简单模型要想用最佳方式完成特征工程必须对问题的领域有一定的了解并且很大程度上取决于相关数据。
SMILES转换使用RDKit库将数据集中的SMILES字符串转换回字符串的列表。
这是特征工程的一部分这是为了便于下一步特征的提取SMILES可以使用TF-IDF计算方法。
这是一种数据预处理的手段。
字符串处理将SMILES字符串列表转换为单个字符串每个SMILES之间用空格分隔。
TF-IDF计算使用TfidfVectorizer从处理后的SMILES字符串创建TF-IDF特征矩阵TF-IDF是一种词文本的统计学方法用于统计词文本在文件中出现的频率衡量该词条的重要程度。
这是一种特征提取手段。
自然数编码定义了一个函数label_encode将分类特征对象类型转换为整数编码。
首先它接受一个pandas
Series作为输入获取Series中的唯一值列表然后创建一个字典将每个唯一值映射到一个整数最后使用这个字典将原始Series中的每个值映射到相应的整数。
检测到object类型就应用label_encode进行编码。
这样的编码方式比较直观同时符合需要顺序的特点。
特征和标签准备对于所有的特征列cols如果它们的数据类型是对象通常表示为字符串则应用自然数编码从合并后的数据集中分离出训练集和测试集其中训练集包含标签Label测试集不包含。
特征和标签的筛选由于不需要uuid、Label和smiles_list剔除并提取标签列。
np.zeros(test_x.shape[0])cv_scores
train_y)):print(************************************
{}************************************.format(str(i1),
bootstrap_type:Bernoulli,random_seed:seed,od_type:
eval_metricAUC)model.fit(trn_x,
val_y),metric_period100,cat_features[],
model.predict_proba(val_x)[:,1]test_pred
model.predict_proba(test_x)[:,1]train[valid_index]
kf.n_splitscv_scores.append(f1_score(val_y,
0)))print(cv_scores)print(%s_score_list:
np.mean(cv_scores))print(%s_score_std:
indexNone)代码定义了一个名为cv_model的函数用于交叉验证和预测。
这段代码的核心是交叉验证和CatBoost训练模型。
交叉检验是评估模型性能的常用方法。
交叉检验是使用训练数据集来训练模型然后使用测试数据集来评估模型性能。
*一轮交叉验证包括将数据样本划分为互补子集对一个子集称为训练集执行分析并在另一个子集称为验证集或测试集上验证分析结果。
为了减少可变性在大多数方法中使用不同的分区执行多轮交叉验证并且在这些回合中验证结果被组合例如平均以估计最终的预测模型。
引自维基百科*作者使用了暂留集(hold-out
set)这种方法在一部分上训练模型然后在另一部分上检查其性能。
这也是交叉检验的一种。
选择正确的交叉检验取决于所处理的数据集。
在一个数据集上适用的交叉检验并不一定就适合别的数据集。
交叉检验是将训练数据分层几个部分在一部分上训练模型在其余部分上测试。
得到一个数据集来构建机器学习模型时可以把他们分为两个不同的集训练集和验证集。
训练集用来训练模型验证集用来评估模型。
实际上很多人会用第三个集测试集在下述代码中只使用两个集。
我们可以将数据分为k个互不关联的不同集合即所谓的k折交叉验证。
这样每一个不同的集合称为一个“褶皱”。
最大迭代次数是iterations20000eval_metric‘AUC’表示使用AUC作为评估指标。
Curve是一种评价二分类模型性能的指标之一ROCReceiver
Characteristic曲线是基于不同的分类阈值计算得出的展示了在各种阈值下真阳性率True
曲线是以假阳性率FPR为横轴真阳性率TPR为纵轴绘制的曲线。
在理想情况下ROC
曲线应该尽量靠近左上角表示在保持高真阳性率的同时尽量低假阳性率。
接着使用验证集val_x和val_y对模型进行评估获取预测概率val_pred。
F12∗TFFPFN2∗TF它是精确度和召回率的调和平均值是衡量测试准确度的标准。
可能的最高值为1表示完美的精确度和召回率。
精准率P,Precision它用于衡量模型的查准性能正确预测的样本中预测为正的样本的比例。
召回率R,Recall它用于衡量模型的查全性能预测为正的样本中实际为正的样本的比例。
Boosting专为处理分类特征和提高机器学习模型性能而设计。
以下是
属于梯度提升算法家族通过迭代训练一组弱学习器通常是决策树来提高预测准确性。
每一步都会根据前一步模型的错误来改进当前模型。
的一个显著优势是能够直接处理分类特征无需将它们转换为数值形式如独热编码。
CatBoost
采用了专门的技术来编码分类特征简化了数据预处理过程并且往往能提升模型性能。
CatBoost接收的主要的参数有最大迭代次数iterations最大深度depth学习率learning_rate梯度学习算法中控制每棵树贡献的步长大小的参数通常小于1分类特征cat_features它是一个用于指定哪些特征是分类变量的列表。
CatBoost可以直接处理这些分类特征而不依赖于数值转换。
作为专业的SEO优化服务提供商,我们致力于通过科学、系统的搜索引擎优化策略,帮助企业在百度、Google等搜索引擎中获得更高的排名和流量。我们的服务涵盖网站结构优化、内容优化、技术SEO和链接建设等多个维度。
| 服务项目 | 基础套餐 | 标准套餐 | 高级定制 |
|---|---|---|---|
| 关键词优化数量 | 10-20个核心词 | 30-50个核心词+长尾词 | 80-150个全方位覆盖 |
| 内容优化 | 基础页面优化 | 全站内容优化+每月5篇原创 | 个性化内容策略+每月15篇原创 |
| 技术SEO | 基本技术检查 | 全面技术优化+移动适配 | 深度技术重构+性能优化 |
| 外链建设 | 每月5-10条 | 每月20-30条高质量外链 | 每月50+条多渠道外链 |
| 数据报告 | 月度基础报告 | 双周详细报告+分析 | 每周深度报告+策略调整 |
| 效果保障 | 3-6个月见效 | 2-4个月见效 | 1-3个月快速见效 |
我们的SEO优化服务遵循科学严谨的流程,确保每一步都基于数据分析和行业最佳实践:
全面检测网站技术问题、内容质量、竞争对手情况,制定个性化优化方案。
基于用户搜索意图和商业目标,制定全面的关键词矩阵和布局策略。
解决网站技术问题,优化网站结构,提升页面速度和移动端体验。
创作高质量原创内容,优化现有页面,建立内容更新机制。
获取高质量外部链接,建立品牌在线影响力,提升网站权威度。
持续监控排名、流量和转化数据,根据效果调整优化策略。
基于我们服务的客户数据统计,平均优化效果如下:
我们坚信,真正的SEO优化不仅仅是追求排名,而是通过提供优质内容、优化用户体验、建立网站权威,最终实现可持续的业务增长。我们的目标是与客户建立长期合作关系,共同成长。
Demand feedback