[娱乐]Bilibili 2016动画角色男女主角冠军预测

         突然看到Bilibili 2016动画角色人气比拼的活动,一时兴起,利用sklearn进行冠军的预测,数据来自http://bangumi.bilibili.com/moe/2016/jp/schedule/20170101。

         冠军未产生时的人气对决数据如下:

[娱乐]Bilibili 2016动画角色男女主角冠军预测_第1张图片

[娱乐]Bilibili 2016动画角色男女主角冠军预测_第2张图片

          博主并不是一个深度宅男,除了一些热门角色(大部分都是),有些 角色需要翻看百度百科来给人物确立特征,暂定特征有:是否是主角(0,1),性格冷或热(0,1),性格稳定度(0,1),SorM(0,1),发色是否为黑(0,1),是否长发(0,1),不能确定的取0.5,来为每个角色建立数据。

         对决的数据为两个角色的特征差,对决结果为两个角色的票数比例(左人物比上右人物),对决数据如下:

IfMaincha Stability ColdorHot SorM IfHairBlack IfHairlong Rank
0 1 0 -1 0 0 0.6323195642
1 -1 0 0.5 1 1 0.9933649866
1 1 0 0.5 0 1 0.8718418515
1 0 -1 0 0 0 0.7054327375
0 0 -0.5 0 0.5 0 1.0489565819
0 0 -1 0 -0.5 0 1.1693645485
0 1 0 -1 -1 -0.5 0.8763312998
1 0 1 0 0 0 1.0544862304
0 -1 0 1 0 1 1.176349052
0 0 -1 -1 0.5 -1 1.0830188679
0 0 -0.5 0 0.5 0 0.9055555556
1 -1 1 0 0 0.5 1.6249837683

         编写python程序,利用sklearn中的SVM回归来进行拟合,代码如下:

读取数据:

# Imports

# pandas
import pandas as pd
from pandas import Series,DataFrame

# numpy, matplotlib, seaborn
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
sns.set_style('whitegrid')
%matplotlib inline

# machine learning
from sklearn.svm import SVR
train_df = pd.read_csv("/home/lsei/文档/train.csv")
test_df    = pd.read_csv("/home/lsei/文档/test.csv")

# preview the data
train_df.head()

# define training and testing sets
X_train = train_df.drop("Rank",axis=1)
Y_train = train_df["Rank"]
X_test  = test_df.copy()

  IfMaincha Stability ColdorHot SorM IfHairBlack IfHairlong Rank
0 0 1 0.0 -1.0 0.0 0 0.632320
1 1 -1 0.0 0.5 1.0 1 0.993365
2 1 1 0.0 0.5 0.0 1 0.871842
3 1 0 -1.0 0.0 0.0 0 0.705433
4 0 0 -0.5 0.0 0.5 0 1.048957
数据预测:

svc = SVR()
svc.fit(X_train, Y_train)
Y_pred = svc.predict(X_test)
svc.score(X_train, Y_train)

预测结果:

Y_pred=Y_pred1+Y_pred2+Y_pred3+Y_pred4+Y_pred5+Y_pred6+Y_pred7

Y_pred=np.round(Y_pred/7.0)

Y_pred=Y_pred.astype(int);

Y_pred

结果为:

array([ 1.27587358, 0.85956564])


即蕾姆获胜,夜斗获胜。蕾姆票数比五和琴里为:1.27587358杀老师票数比夜斗为:0.85956564最终结果如下:
[娱乐]Bilibili 2016动画角色男女主角冠军预测_第3张图片

冠军结果正确,蕾姆票数比例比预测高很多1.72(预测1.276)(评论中为蕾姆拉票的很多),夜斗获胜票数比例基本预测正确0.905(预测0.86)。

PS:其实单纯靠蒙猜对的正确率也有25%,而且数据量极少,所以只用了sklearn的基本函数,这篇机器学习的数据预测的目的只是娱乐一下。




你可能感兴趣的:(数据挖掘,bilibili,二次元,机器学习,sklearn)