作业21答案

练习1 KNN分类训练

  1. 解释KNN算法的基本流程
  2. 解释KNN算法的主要原理、优缺点及使用技巧
  3. 在Python上实现knn分类算法
from sklearn.datasets import load_iris  
from sklearn import neighbors  
import sklearn    
iris = load_iris()  
print(iris)  
knn = neighbors.KNeighborsClassifier()  
knn.fit(iris.data, iris.target)  
predict = knn.predict([[0.1,0.2,0.3,0.4]])  
print(predict)  
print(iris.target_names[predict])

练习2 支持向量机分类训练

  1. 解释支持向量机的基本原理,几何间隔函数间隔等基础概念
  2. 解释支持向量机的优缺点和适用场
  3. 在Python上实现支持向量机分类算法
from sklearn import datasets
from sklearn import svm
digits=datasets.load_digits()
clf = svm.SVC(gamma=0.001,C=100.)
clf.fit(digits.data[:-1],digits.target[:-1])
clf.predict(digits.data[-1:])
print(clf.predict)

练习3 决策树分类训练

  1. 解释决策树算法的原理,学会特征选择,分枝过程
  2. 解释决策树算法的实现过程,能比较多种不同决策树
  3. 在Python上实现决策树分类模型
import numpy as np
from sklearn.datasets import load_iris
from sklearn import tree
iris=load_iris()
test_idx=[0,50,100]
train_target=np.delete(iris.target,test_idx)
train_data=np.delete(iris.data,test_idx,axis=0)
test_target=iris.target[test_idx]
test_data=iris.data[test_idx]
clf=tree.DecisionTreeClassifier()
clf.fit(train_data,train_target)
print(test_target)
print(clf.predict(test_data))
from sklearn.externals.six import StringIO
import pydot
dot_data=StringIO()
tree.export_graphviz(clf, out_file=dot_data,
                     feature_names=iris.feature_names,
                     class_names=iris.target_names,
                     filled=True, rounded=True,
                     impurity=False)
graph = pydot.graph_from_dot_data(dot_data.getvalue())
graph[0].write_pdf("iris.pdf")

练习4 随机森林分类训练

  1. 解释随机森林算法的原理,比较决策树和随机森林的相互关系
  2. 解释模型集成的思想
  3. 使用Python建立随机森林分类模型
from sklearn.datasets import load_iris 
from sklearn.ensemble import RandomForestClassifier 
import pandas as pd 
import numpy as np
iris = load_iris() 
df = pd.DataFrame(iris.data, columns=iris.feature_names) 
df['is_train'] = np.random.uniform(0, 1, len(df)) <= .75 
df['species'] = pd.Factor(iris.target, iris.target_names) 
df.head()
train, test = df[df['is_train']==True], df[df['is_train']==False]
features = df.columns[:4] 
clf = RandomForestClassifier(n_jobs=2) 
y = pd.factorize(train['species']) 
clf.fit(train[features], y)
preds = iris.target_names[clf.predict(test[features])] 
pd.crosstab(test['species'], preds, rownames=['actual'], colnames=['preds'])

results matching ""

    No results matching ""