支持向量机的实际应用----预测

本次文章写得是根据时间与一栋大楼中的进出人数来预测是否有活动;具体数据集如下:

该文件是一个.txt文本文件,我们首先需要将该文件中的数据导入我们的运行环境中:

如下是加载数据的代码块

def load_data(input_file):
    x = []
    with open(input_file, 'r') as f:
        for line in f.readlines():
            data = [i for i in line.split(",")]
            x.append(data[:])
    return x

 我们去读取每一行的数据,并以‘,’来分隔字符串,最后得到的x的结果为:

 因为数据中带有非数字字符,所以我们需要将x转化成数字,代码如下:

def preprocess(x):
    label_encoder = []
    xencoded = np.empty(x.shape)
    for i, item in enumerate(x[0]):
        if item.isdigit():
            xencoded[:, i] = x[:, i]
        else:
            label_encoder.append(preprocessing.LabelEncoder())
            xencoded[:,i] = label_encoder[-1].fit_transform(x[:,1])
    
    x = xencoded[:, :-1].astype(int)
    xlabel = xencoded[:, -1].astype(int)
    return x, xlabel, label_encoder

转换结果如下: 

 最后我们用以经转换好的数据输入到模型中,并通过交叉验证的方式得到模型的匹配程度

params = {'kernel': 'rbf', 'probability':True, 'class_weight':None}
classifier = SVC(**params)
classifier.fit(x,xlabel)

from sklearn import model_selection

accuracy = model_selection.cross_val_score(classifier, 
        X, y, scoring='accuracy', cv=3)
print("Accuracy of the classifier: " + str(round(100*accuracy.mean(), 2)) + "%")

如下:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值