有监督的机器学习,产生训练有素的估算器

时间:2015-11-05 18:32:01

标签: algorithm python-2.7 numpy machine-learning scikit-learn

我有一项任务,我应该使用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

在预处理过程中,我对数据进行了混洗,因为我应该使用其中的一些进行训练,其中一些要进行测试,但原始数据并非完全随机。我的问题是,我应该如何制作一个训练有素的估算器"在预测(数据集)?这应该是一个返回另一个函数的函数吗?哪种算法非常适合基于如下所示的数据集进行分类:enter image description here

3 个答案:

答案 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()函数,而不是创建可以产生另一个函数的函数