作业21答案
练习1 KNN分类训练
- 解释KNN算法的基本流程
- 解释KNN算法的主要原理、优缺点及使用技巧
- 在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 支持向量机分类训练
- 解释支持向量机的基本原理,几何间隔函数间隔等基础概念
- 解释支持向量机的优缺点和适用场
- 在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 决策树分类训练
- 解释决策树算法的原理,学会特征选择,分枝过程
- 解释决策树算法的实现过程,能比较多种不同决策树
- 在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 随机森林分类训练
- 解释随机森林算法的原理,比较决策树和随机森林的相互关系
- 解释模型集成的思想
- 使用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'])