K近邻算法
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
from sklearn import neighbors
import warnings
warnings.filterwarnings('ignore')
data=pd.DataFrame({'name':['北京遇上西雅图','喜欢你','疯狂动物城','战狼2','力王','敢死队'],
'fight':[3,2,1,101,99,98],
'kiss':[104,100,81,10,5,2],
'type':['Romance','Romance','Romance','Action','Action','Action']})
print(data)
print('----------------------------------')
plt.scatter(data[data['type']=='Romance']['fight'],data[data['type']=='Romance']['kiss'],color='r',marker='o',label='Romance')
plt.scatter(data[data['type']=='Action']['fight'],data[data['type']=='Action']['kiss'],color='b',marker='o',label='Action')
plt.grid()
plt.legend()
knn=neighbors.KNeighborsClassifier()
knn.fit(data[['fight','kiss']], data['type'])
knn.predict([[18, 90]])
plt.scatter(18,90,color='r',marker='x',label='Romance')
plt.ylabel('kiss')
plt.xlabel('fight')
plt.text(18,90,'《你的名字》',color='r')
data2=pd.DataFrame(np.random.rand(100,2)*50,columns=['fight','kiss'])
data2['typetest']=knn.predict(data2)
data2.head()
plt.scatter(data[data['type']=='Romance']['fight'],data[data['type']=='Romance']['kiss'],color='r',marker='o',label='Romance')
plt.scatter(data[data['type']=='Action']['fight'],data[data['type']=='Action']['kiss'],color='b',marker='o',label='Action')
plt.grid()
plt.legend()
plt.scatter(data2[data2['typetest']=='Romance']['fight'],data2[data2['typetest']=='Romance']['kiss'],color='r',marker='x',label='Romance')
plt.scatter(data2[data2['typetest']=='Action']['fight'],data2[data2['typetest']=='Action']['kiss'],color='b',marker='x',label='Action')
from sklearn import datasets
iris=datasets.load_iris()
print(iris.keys())
print('数据长度为:%i条' % len(iris['data']))
print(iris.feature_names)
print(iris.target_names)
print(iris.data[:5])
data=pd.DataFrame(iris.data,columns=iris.feature_names)
data['target']=iris.target
ty=pd.DataFrame({'target':[0,1,2],
'target_names':iris.target_names})
df=pd.merge(data,ty,on='target')
df.head()
knn=neighbors.KNeighborsClassifier()
knn.fit(iris.data,df['target_names'])
pre_data=knn.predict([[0.2,0.1,0.3,0.4]])
print(pre_data)