我有一项任务,我应该使用scikit,numpy和pylab来执行以下操作:
"以下所有内容都应使用training_data.csv文件中的数据 提供。 training_data为您提供一组标记的整数对, 代表两个运动队的得分,标签给出了 运动。
编写以下函数:
plot_scores()应该绘制数据的散点图。
预测(数据集)应该产生训练有素的Estimator来猜测这项运动 这导致了一个给定的分数(来自我们保留的数据集,这将是 输入为1000 x 2 np数组)。您可以使用scikit中的任何算法。
一个名为" preprocess"的可选附加功能;将处理数据集 在我们传递预测之前。 "
这是我到目前为止所做的:
import numpy as np
import scipy as sp
import pylab as pl
from random import shuffle
def 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
在预处理过程中,我对数据进行了混洗,因为我应该使用其中的一些进行训练,其中一些要进行测试,但原始数据并非完全随机。我的问题是,我应该如何制作一个训练有素的估算器"在预测(数据集)?这应该是一个返回另一个函数的函数吗?哪种算法非常适合基于如下所示的数据集进行分类:
答案 0 :(得分:1)
该任务可能希望您训练标准的scikit分类器模型并将其返回,即类似
from sklearn.svm import SVC
def predict(dataset):
X = ... # features, extract from dataset
y = ... # labels, extract from dataset
clf = SVC() # create classifier
clf.fit(X, y) # train
return clf
虽然从函数名称(predict
)判断,但您应该检查它是否真的希望您返回训练有素的分类器或返回给定dataset
参数的预测,因为这更典型
作为分类器,您基本上可以使用任何您喜欢的人。您的绘图看起来像您的数据集是线性可分离的(类没有颜色,但我认为blops是两个类)。在线性可分的数据上几乎没有任何东西会失败。尝试SVM,逻辑回归,随机森林,朴素贝叶斯......为了获得更多乐趣,您可以尝试绘制决策边界,请参阅here(其中还包含可用分类器的概述)。
答案 1 :(得分:0)
我建议你看看这个结构:
#
答案 2 :(得分:0)
我认为您正在寻找的是clf.fit()函数,而不是创建可以产生另一个函数的函数