本次文章写得是根据时间与一栋大楼中的进出人数来预测是否有活动;具体数据集如下:
该文件是一个.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)) + "%")
如下: