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

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

支持向量机的实际应用----预测_第1张图片

该文件是一个.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的结果为:

支持向量机的实际应用----预测_第2张图片

 因为数据中带有非数字字符,所以我们需要将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

转换结果如下: 

支持向量机的实际应用----预测_第3张图片

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

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)) + "%")

如下:

 

你可能感兴趣的:(支持向量机,机器学习,python)