1. 首页
  2. 技术文章

Python中的机器学习算法三

e、 朴素贝叶斯
朴素贝叶斯是一种基于贝叶斯定理的分类方法。这假设预测值之间是独立的。朴素贝叶斯分类器会假设一个类中的某个特征与其他特征无关。考虑一个水果。这是一个苹果,如果它是圆形的,红色的,直径2.5英寸。一个朴素的贝叶斯分类器会说,这些特征独立地影响了水果成为苹果的概率。这是即使功能相互依赖。
对于非常大的数据集,很容易建立一个朴素的贝叶斯模型。这个模型不仅非常简单,而且比许多高度复杂的分类方法表现得更好。让我们建造这个。

Python中的机器学习算法三

>>> from sklearn.naive_bayes import GaussianNB

>>> from sklearn.naive_bayes import MultinomialNB

>>> from sklearn import datasets

>>> from sklearn.metrics import confusion_matrix

>>> from sklearn.model_selection import train_test_split

>>> iris=datasets.load_iris()

>>> x=iris.data

>>> y=iris.target

>>> x_train,x_test,y_train,y_test=train_test_split(x,y,test_size=0.3,random_state=0)

>>> gnb=GaussianNB()

>>> mnb=MultinomialNB()

>>> y_pred_gnb=gnb.fit(x_train,y_train).predict(x_test)

>>> cnf_matrix_gnb = confusion_matrix(y_test, y_pred_gnb)

>>> cnf_matrix_gnb

array([[16, 0, 0],
[ 0, 18, 0],
[ 0, 0, 11]], dtype=int64)>>> y_pred_mnb = mnb.fit(x_train, y_train).predict(x_test)>>> cnf_matrix_mnb = confusion_matrix(y_test, y_pred_mnb)>>> cnf_matrix_mnb

array([[16, 0, 0],
[ 0, 0, 18],
[ 0, 0, 11]], dtype=int64)

f、 kNN(k-最近邻)
这是一个用于分类和回归的Python机器学习算法-主要用于分类。这是一个有监督的学习算法,考虑不同的质心,并使用通常的欧几里德函数来比较距离。然后,对结果进行分析,并将每个点分类到组中,使其与所有最接近的点进行优化放置。它用邻居的多数票对新案件进行分类。它分配给类的情况是它的K个近邻中最常见的情况。为此,它使用距离函数。

i、 对整个数据集进行培训和测试

>>> from sklearn.datasets import load_iris
>>> iris=load_iris()
>>> x=iris.data
>>> y=iris.target
>>> from sklearn.linear_model import LogisticRegression
>>> logreg=LogisticRegression()
>>> logreg.fit(x,y)

LogisticRegression(C=1.0, class_weight=None, dual=False, fit_intercept=True,
intercept_scaling=1, max_iter=100, multi_class=’ovr’, n_jobs=1,
penalty=’l2′, random_state=None, solver=’liblinear’, tol=0.0001,
verbose=0, warm_start=False)

>>> logreg.predict(x)

array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2])

>>> y_pred=logreg.predict(x)

>>> len(y_pred)

150

>>> from sklearn import metrics

>>> metrics.accuracy_score(y,y_pred)

0.96

>>> from sklearn.neighbors import KNeighborsClassifier

>>> knn=KNeighborsClassifier(n_neighbors=5)

>>> knn.fit(x,y)

KNeighborsClassifier(algorithm=’auto’, leaf_size=30, metric=’minkowski’,
metric_params=None, n_jobs=1, n_neighbors=5, p=2,
weights=’uniform’)

>>> y_pred=knn.predict(x)

>>> metrics.accuracy_score(y,y_pred)

0.9666666666666667

>>> knn=KNeighborsClassifier(n_neighbors=1)

>>> knn.fit(x,y)

KNeighborsClassifier(algorithm=’auto’, leaf_size=30, metric=’minkowski’,
metric_params=None, n_jobs=1, n_neighbors=1, p=2,
weights=’uniform’)

>>> y_pred=knn.predict(x)

>>> metrics.accuracy_score(y,y_pred)

1.0

ii. Splitting into train/test

>>> x.shape

(150, 4)>>> y.shape

(150,)>>> from sklearn.cross_validation import train_test_split>>> x.shape

(150, 4)

>>> y.shape

(150,)

>>> from sklearn.cross_validation import train_test_split>>> x_train,x_test,y_train,y_test=train_test_split(x,y,test_size=0.4,random_state=4)

>>> x_train.shape

(90, 4)

>>> x_test.shape

(60, 4)

>>> y_train.shape

(90,)

>>> y_test.shape

(60,)

>>> logreg=LogisticRegression()

>>> logreg.fit(x_train,y_train)

>>> y_pred=knn.predict(x_test)

>>> metrics.accuracy_score(y_test,y_pred)

0.9666666666666667

>>> knn=KNeighborsClassifier(n_neighbors=5)

>>> knn.fit(x_train,y_train)

KNeighborsClassifier(algorithm=’auto’, leaf_size=30, metric=’minkowski’,
metric_params=None, n_jobs=1, n_neighbors=5, p=2,
weights=’uniform’)

>>> y_pred=knn.predict(x_test)

>>> metrics.accuracy_score(y_test,y_pred)

0.9666666666666667

>>> k_range=range(1,26)

>>> scores=[]

>>> for k in k_range: knn = KNeighborsClassifier(n_neighbors=k) knn.fit(x_train, y_train) y_pred = knn.predict(x_test) scores.append(metrics.accuracy_score(y_test, y_pred))

>>> scores

[0.95, 0.95, 0.9666666666666667, 0.9666666666666667, 0.9666666666666667, 0.9833333333333333, 0.9833333333333333, 0.9833333333333333, 0.9833333333333333, 0.9833333333333333, 0.9833333333333333, 0.9833333333333333, 0.9833333333333333, 0.9833333333333333, 0.9833333333333333, 0.9833333333333333, 0.9833333333333333, 0.9666666666666667, 0.9833333333333333, 0.9666666666666667, 0.9666666666666667, 0.9666666666666667, 0.9666666666666667, 0.95, 0.95]

>>> import matplotlib.pyplot as plt

>>> plt.plot(k_range,scores)

[<matplotlib.lines.Line2D object at 0x05FDECD0>]

>>> plt.xlabel(‘k for kNN’)

Text(0.5,0,’k for kNN’)

>>> plt.ylabel(‘Testing Accuracy’)

Text(0,0.5,’Testing Accuracy’)

>>> plt.show()

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站不拥有所有权,不承担相关法律责任。如发现有侵权/违规的内容, 联系QQ1841324605,本站将立刻清除。

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注

联系我们

服务热线:130-0886-1890

QR code