监督机器学习,生成训练好的估计器

我有一个作业,需要使用scikit、numpy和pylab来完成以下任务:

“所有以下操作都应使用提供的training_data.csv文件中的数据。training_data为您提供了一组标记的整数对,表示两个运动队的得分,标签给出了运动类型。

编写以下函数:

plot_scores() 应绘制数据的散点图。

predict(dataset) 应生成一个训练好的估计器,用于猜测给定得分所对应的运动(来自我们保留的数据集,将作为1000 x 2的np数组输入)。您可以使用scikit中的任何算法。

一个可选的附加函数名为“preprocess”,将在数据集传递给predict之前对其进行处理。”

这是我目前所做的:

import numpy as npimport scipy as spimport pylab as plfrom random import shuffledef plot_scores():    k=open('training_data.csv')    lst=[]    for triple in k:        temp=triple.split(',')        lst.append([int(temp[0]), int(temp[1]), int(temp[2][:1])])    array=np.array(lst)    pl.scatter(array[:,0], array[:,1])    pl.show()def preprocess(dataset):    k=open('training_data.csv')    lst=[]    for triple in k:        temp=triple.split(',')        lst.append([int(temp[0]), int(temp[1]), int(temp[2][:1])])    shuffle(lst)    return lst

在preprocess中,我对数据进行了洗牌,因为我需要用其中的一部分进行训练,另一部分进行测试,但原始数据完全不随机。我的问题是,如何在predict(dataset)中“生成训练好的估计器”?这是否应该是一个返回另一个函数的函数?对于看起来像这样的数据集,哪种算法最适合进行分类: enter image description here


回答:

任务可能希望您训练一个标准的scikit分类器模型并返回它,即类似于

from sklearn.svm import SVCdef predict(dataset):    X = ... # 特征,从数据集中提取    y = ... # 标签,从数据集中提取    clf = SVC() # 创建分类器    clf.fit(X, y) # 训练    return clf

不过,从函数名称(predict)来看,您应该检查它是否真的希望您返回一个训练好的分类器,还是返回给定dataset参数的预测结果,因为后者更为常见。

作为分类器,您基本上可以使用任何您喜欢的。您的图表看起来数据集是线性可分的(没有为类别着色,但我假设那些团块是两个类别)。对于线性可分的数据,几乎没有什么会失败。尝试使用SVM、逻辑回归、随机森林、朴素贝叶斯等。为了增加乐趣,您可以尝试绘制决策边界,参见这里(其中还包含了可用分类器的概览)。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注