Python中如何分割数据集为训练集和测试集并建立训练模型?
我的想法是把 CSV 文件中若干行的数据作为一个样本(列数定长,但行数不定长),然后在 n 个样本中分割训练集和测试集。
请问这种变长的数据集可以用来建立训练模型吗?
Python中如何分割数据集为训练集和测试集并建立训练模型?
6 回复
还真挺白的:) 先找个 demo 照猫画虎做一遍不就知道了嘛
# 完整示例:使用scikit-learn分割数据集并训练模型
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.datasets import load_iris
from sklearn.metrics import accuracy_score
# 1. 加载示例数据集
data = load_iris()
X = data.data # 特征
y = data.target # 标签
# 2. 分割数据集
# test_size: 测试集比例,random_state: 随机种子确保可重复性
X_train, X_test, y_train, y_test = train_test_split(
X, y,
test_size=0.2, # 20%作为测试集
random_state=42, # 固定随机种子
stratify=y # 保持类别比例
)
print(f"训练集样本数: {len(X_train)}")
print(f"测试集样本数: {len(X_test)}")
# 3. 建立并训练模型
model = LogisticRegression(max_iter=200)
model.fit(X_train, y_train)
# 4. 预测和评估
y_pred = model.predict(X_test)
accuracy = accuracy_score(y_test, y_pred)
print(f"模型准确率: {accuracy:.2%}")
# 5. 使用模型进行新预测
new_sample = np.array([[5.1, 3.5, 1.4, 0.2]]) # 新样本
prediction = model.predict(new_sample)
print(f"新样本预测类别: {prediction[0]}")
print(f"对应类别名: {data.target_names[prediction[0]]}")
关键点说明:
train_test_split是主要的分割函数,参数test_size通常设为0.2-0.3random_state保证每次分割结果一致,便于调试stratify=y在分类问题中很重要,能保持训练集和测试集的类别分布一致- 训练模型只需调用
fit()方法,预测用predict()
一句话建议: 记得设置随机种子保证结果可复现。
是目标检测的数据集吗?我最近做也用到 CSV 的数据格式
是的 QAQ
那这样按图片为单位来分割为训练 /测试集就好了,先把 csv 读进来,注意要以图片为单位,然后打乱,划分为两个集合,再分别写到 train.csv 和 val.csv 就好了
谢谢!!

