如何利用Kaggle蛋白质分类代码预测未知序列数据集的分类?
利用现有蛋白质分类模型预测自定义序列分类的解决方案
问题背景
已获取Kaggle上的蛋白质分类代码与数据集,但自身数据集为仅包含蛋白质序列的CSV文件,仅sequence列与原训练集重合,需基于现有代码/模型预测自定义序列对应的分类。
解决方案步骤
1. 完成原模型训练(关键修改)
原代码中存在sys.exit()语句,会中断模型训练流程,需先注释该语句,确保模型完成训练,并保存训练好的特征向量器与模型,方便后续复用:
# 导入必要库(原代码已包含,此处仅作提示) import pandas as pd import numpy as np from sklearn.feature_extraction.text import CountVectorizer from sklearn.model_selection import train_test_split from sklearn.naive_bayes import MultinomialNB from sklearn.metrics import accuracy_score import sys import joblib # ...(原代码中数据加载、预处理、训练集划分部分保持不变) # 注释原代码中的sys.exit(),避免中断训练 # sys.exit() # 4). ------ Machine Learning Models ------ prediction = dict() # 训练朴素贝叶斯模型(原代码逻辑) model = MultinomialNB() model.fit(X_train_df, y_train) NB_pred = model.predict(X_test_df) prediction["MultinomialNB"] = accuracy_score(NB_pred, y_test) print(f"MultinomialNB准确率: {prediction['MultinomialNB']}") # 保存特征向量器和训练好的模型,方便后续复用 joblib.dump(vect, 'protein_sequence_vectorizer.pkl') joblib.dump(model, 'protein_classification_model.pkl') print("向量器与模型已保存")
2. 加载自定义数据集并执行预测
无论是训练完成后直接预测,还是后续单独加载模型预测,都可使用以下代码:
# 加载自定义序列CSV文件 custom_data = pd.read_csv('你的自定义序列文件.csv') # 若你的序列列名不是sequence,修改为对应列名 # custom_data = custom_data.rename(columns={'原列名': 'sequence'}) # 加载之前保存的向量器和模型 vect = joblib.load('protein_sequence_vectorizer.pkl') model = joblib.load('protein_classification_model.pkl') # 对自定义序列执行与训练集一致的特征转换 X_custom = vect.transform(custom_data['sequence']) # 执行分类预测 custom_predictions = model.predict(X_custom) # 可选:获取每个预测结果的置信概率 custom_probs = model.predict_proba(X_custom) custom_data['prediction_confidence'] = np.max(custom_probs, axis=1) # 合并预测结果并保存到CSV custom_data['predicted_classification'] = custom_predictions custom_data.to_csv('蛋白质分类预测结果.csv', index=False) print("预测结果已保存至蛋白质分类预测结果.csv")
3. 关键注意事项
- 确保自定义序列格式与原训练集一致:仅包含标准氨基酸缩写(如A、C、D等),无特殊字符、缺失值或格式错误
- 原模型仅针对样本量>1000的分类类型训练,预测结果只会属于这些分类,可通过原代码中的
types变量查看具体分类列表 - 若自定义序列存在长度异常(过短或过长),建议参照原训练集的序列长度范围进行过滤,避免预测偏差
内容的提问来源于stack exchange,提问作者Rashid
相关产品推荐
相关产品推荐

