目录
iris = load_iris() clf = neighbors.KNeighborsClassifier(n_neighbors=3) X = iris.data y = iris.target knn = clf.fit(X, y) predict = knn.predict([[4.1, 3.3, 1.4, 0.3]])
新增AI编程课程,引领技术教育新趋势
目录
iris = load_iris() clf = neighbors.KNeighborsClassifier(n_neighbors=3) X = iris.data y = iris.target knn = clf.fit(X, y) predict = knn.predict([[4.1, 3.3, 1.4, 0.3]])
关键参数:
优点:计算复杂度不高,输出结果易于理解,对中间值的缺失不敏感,可以处理不相关特征数据
缺点:可能会产生过度匹配问题
适用数据类型:数值型和标称型
特征选择:特征选择是指从训练数据中众多的特征中选择一个特征作为当前节点的分裂标准,如何选择特征有着很多不同量化评估标准标准,从而衍生出不同的决策树算法。
决策树生成: 根据选择的特征评估标准,从上至下递归地生成子节点,直到数据集不可分则停止决策树停止生长。 树结构来说,递归结构是最容易理解的方式。
剪枝:决策树容易过拟合,一般来需要剪枝,缩小树结构规模、缓解过拟合。剪枝技术有预剪枝和后剪枝两种。
信息增益:熵 - 条件熵
条件熵 H(Y|X=长相)= p(X =帅)*H(Y|X=帅)+ p(X =不帅)*H(Y|X=不帅)
http://scikit-learn.org/stable/modules/generated/sklearn.tree.DecisionTreeClassifier.html
clf = tree.DecisionTreeClassifier() clf = clf.fit(iris.data, iris.target) with open("iris.dot", 'w') as f: f = tree.export_graphviz(clf, out_file=f)
关键参数
优点:对数据较少情况下仍然有效,可以处理多类别问题
缺点:对于输入数据的准备方式较为敏感
在实际应用中,我们的现象不可能只有一个,比如,在垃圾邮件分类中,甚至可能有几千个词的特征向量。下面,我将引入一些数学上的记号来统一后面的表达:
ωj表示属于哪个类别,j∈{1,2,3,…,m} xi表示特征向量中的第i个特征,i∈{1,2,3,…,n}朴素贝叶斯的目标就是分别求得P(ωj|给定现象)j∈{1,2,3,…,m},选出最大的概率。
http://sklearn.lzjqsdd.com/modules/naive_bayes.html
iris = datasets.load_iris() from sklearn.naive_bayes import GaussianNB nb = GaussianNB() y_pred = gnb.fit(iris.data, iris.target).predict(iris.data)