机器学习调包侠:sklearn测试数据切分和计算分类结果准确率

本文通过实例介绍了如何使用sklearn库中的K近邻分类器对鸢尾花数据集进行分类。从数据准备到模型训练,再到预测结果及准确率评估,详细展示了分类器的学习过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本篇对应教程

油管原版B站搬运。这期视频简单介绍了一些分类器学习算法的原理,如果我们需要对坐标系上的点进行分类,那么首先需要创建一条随机的直线,该直线的两侧就是分类的结果。如果训练数据中某个点的落在了直线的另一侧,那么就调整直线的参数从而使直线能够正确划分所有点的,最后的这条直线就是分类器了,测试数据进来后直接根据点在直线的哪一侧来确定点的所属分类,大致就是这么个意思。视频中介绍的神经网络的演示网站挺好玩的,想玩玩的朋友可以戳这里
由于本系列的目的是当一个调包侠,所以不会着重于原理方面的东西,重点在各种框架的接口怎么用,本节课中出现的两个新接口就是sklearn测试数据切分和计算分类结果准确率,具体看下面的代码

代码

# 导入测试数据
from sklearn import datasets
iris = datasets.load_iris()

X = iris.data
y = iris.target

# 将测试数据切分成训练集和测试集,这个切分是随机的
from sklearn.model_selection import  train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = .5)

# 导入不同的分类器看效果
#from sklearn import tree
#my_classifier = tree.DecisionTreeClassifier()
from sklearn.neighbors import KNeighborsClassifier
my_classifier = KNeighborsClassifier()

# 使用训练数据进行训练,然后对测试数据进行分类
my_classifier.fit(X_train, y_train)
predictions = my_classifier.predict(X_test)

# 将预测的分类结果和测试集中真实的分类结果进行对比,计算准确率
from sklearn.metrics import accuracy_score
print(accuracy_score(y_test, predictions))
### 回答1: 我可以给你一个示例:import xgboost as xgb# 指定特征目标变量 X = data.iloc[:,:-1] y = data.iloc[:,-1]# 将数据拆分为训练集测试集 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=123)# 创建XGBoost模型 xg_reg = xgb.XGBRegressor(objective ='reg:linear', colsample_bytree = 0.3, learning_rate = 0.1, max_depth = 5, alpha = 10, n_estimators = 10)# 训练模型 xg_reg.fit(X_train,y_train)# 预测结果 preds = xg_reg.predict(X_test)# 计算精确度 rmse = np.sqrt(mean_squared_error(y_test, preds)) print("RMSE: %f" % (rmse)) ### 回答2: 使用Python来构建一个XGBoost模型的代码如下: ```python # 导入必要的包 import xgboost as xgb from sklearn.model_selection import train_test_split from sklearn.metrics import accuracy_score # 加载数据集 data = xgb.DMatrix('data.csv') # 切分数据集为训练集测试集 X_train, X_test, y_train, y_test = train_test_split(data.data, data.target, test_size=0.2, random_state=42) # 设置模型的超参数 params = {'booster': 'gbtree', 'objective': 'binary:logistic', 'eval_metric': 'error', 'max_depth': 3, 'eta': 0.1} # 训练模型 model = xgb.train(params, data, num_boost_round=10) # 对测试集进行预测 preds = model.predict(X_test) # 将预测结果转换为分类标签 predictions = [round(value) for value in preds] # 计算准确率 accuracy = accuracy_score(y_test, predictions) print(f"Accuracy: {accuracy}") ``` 这段代码首先导入了所需的包,然后使用`xgb.DMatrix`加载数据集。接下来,使用`train_test_split`将数据集切分为训练集测试集。 在设置模型的超参数方面,可以根据具体情况进行调整。`booster`指定使用的基学习器类型,`objective`指定目标函数,`eval_metric`指定评估指标,`max_depth`指定树的最大深度,`eta`指定学习率等。 然后,使用`xgb.train`函数训练模型,传入数据超参数。 接着,使用训练好的模型对测试集进行预测,即使用`model.predict`函数得到预测概率值。 为了将预测结果转换为分类标签,使用一个简单的转换过程,即四舍五入到最近的整数。 最后,使用`accuracy_score`计算预测结果准确率,并打印出来。 ### 回答3: XGBoost (eXtreme Gradient Boosting) 是一种常用的机器学习算法,具有强大的预测能力。以下是一个简单的示例代码,用于构建训练一个XGBoost模型。 首先,我们需要导入必要的库模块: ```python import xgboost as xgb from sklearn.model_selection import train_test_split from sklearn.metrics import accuracy_score ``` 接下来,我们可以加载训练数据集,并将其分为训练集验证集: ```python # 加载数据集 data = xgb.DMatrix('train_data.csv') labels = xgb.DMatrix('train_labels.csv') # 将数据集分为训练集验证集 train_data, validation_data, train_labels, validation_labels = train_test_split(data, labels, test_size=0.2, random_state=42) ``` 然后,我们可以设置模型的超参数训练选项: ```python # 设置模型的超参数 params = { 'objective': 'binary:logistic', # 指定目标函数为二分类逻辑回归 'eval_metric': 'logloss', # 评估指标为对数损失 'max_depth': 3, # 决策树的最大深度 'eta': 0.1 # 学习率 } num_rounds = 100 # 迭代次数 ``` 接下来,我们可以使用训练集来训练XGBoost模型: ```python # 训练模型 model = xgb.train(params, train_data, num_rounds) # 使用模型进行预测 predictions = model.predict(validation_data) # 将预测结果转换为二分类标签 binary_predictions = [1 if value > 0.5 else 0 for value in predictions] ``` 最后,我们可以使用验证集上的预测结果来评估模型的性能: ```python # 计算模型在验证集上的准确率 accuracy = accuracy_score(validation_labels, binary_predictions) print("模型在验证集上的准确率为:", accuracy) ``` 以上代码是简单的XGBoost模型的构建训练过程。使用真实数据集调节超参数,可以进一步提高模型的性能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

木千

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值