>  기사  >  백엔드 개발  >  Python에서 Naive Bayes 알고리즘을 사용하는 방법에 대한 자세한 소개

Python에서 Naive Bayes 알고리즘을 사용하는 방법에 대한 자세한 소개

Y2J
Y2J원래의
2017-04-27 11:38:082208검색

이 글에서는 Python에서 Naive Bayes 알고리즘을 사용하는 방법에 대한 관련 지식을 주로 소개합니다. 매우 좋은 참조 값을 가지고 있습니다. 아래 에디터로 살펴보겠습니다

왜 제목이 '구현'이 아닌 '사용'인지 다시 한번 말씀드리겠습니다.

우선 전문가가 제공하는 알고리즘이 더 좋습니다 우리가 직접 작성하는 알고리즘보다 효율성과 정확성 모두 높습니다.

둘째, 수학을 잘 못하는 사람들에게는 알고리즘을 구현하기 위해 수많은 공식을 공부하는 것이 매우 고통스럽습니다.

다시 말하지만, 다른 사람이 제공한 알고리즘이 귀하의 요구를 충족시키지 못하는 한 "바퀴를 재발명"할 필요가 없습니다.

다시 본론으로 돌아가서 베이지안 알고리즘을 모른다면 관련 정보를 확인해 보세요.

1. 🎜>

P(A|B)=P(AB)/P(B)

2. 베이지안 추론:

P(A|B)=P(A)×P(B|A)/P(B)

말로 설명:

사후 확률 = 사전 확률 × 유사성/정규화 상수

베이지안 알고리즘이 해결해야 할 문제는 유사성을 찾는 방법입니다. 즉, P(B|A)

3의 값. 일반적으로 사용되는 세 가지 Naive Bayes 알고리즘이 scikit-learn 패키지에 제공되며, 이에 대한 설명은 다음과 같습니다.

1) Gaussian Naive Bayes: 속성/특성이 정규분포(아래 그림 참조)를 따른다고 가정하며 주로 수치 특성에 사용됩니다.

scikit-learn 패키지에 포함된 데이터를 사용합니다. 코드와 설명은 다음과 같습니다.

>>>from sklearn import datasets ##导入包中的数据
>>> iris=datasets.load_iris() ##加载数据
>>> iris.feature_names  ##显示特征名字
 ['sepal length (cm)', 'sepal width (cm)', 'petal length (cm)', 'petal width (cm)']
>>> iris.data   ##显示数据
 array([[ 5.1, 3.5, 1.4, 0.2],[ 4.9, 3. , 1.4, 0.2],[ 4.7, 3.2, 1.3, 0.2]............
>>> iris.data.size  ##数据大小 ---600个
>>> iris.target_names  ##显示分类的名字 
 array([&#39;setosa&#39;, &#39;versicolor&#39;, &#39;virginica&#39;], dtype=&#39;<U10&#39;)
>>> from sklearn.naive_bayes import GaussianNB ##导入高斯朴素贝叶斯算法
>>> clf = GaussianNB()    ##给算法赋一个变量,主要是为了方便使用
>>> clf.fit(iris.data, iris.target)  ##开始分类。对于量特别大的样本,可以使用函数partial_fit分类,避免一次加载过多数据到内存

>>> clf.predict(iris.data[0].reshape(1,-1)) ##验证分类。标红部分特别说明:因为predict的参数是数组,data[0]是列表,所以需要转换一下
array([0])
>>> data=np.array([6,4,6,2])   ##验证分类
>>> clf.predict(data.reshape(1,-1))
array([2])

문제: 데이터가 정규 분포를 따르는지 어떻게 판단할 수 있나요? R 언어에는 관련 함수판단이 있거나 직접 그리기를 통해 볼 수 있지만 모두 좌표계에서 P(x, y)를

직접 그릴 수 있는 상황입니다. 예에 있는 데이터는요? 아직 파악하지 못했습니다. 이 부분은 나중에 추가하겠습니다.

2) 다항 분포 Naive Bayes: 텍스트 분류에 자주 사용되며 특징은 단어이고 값은 단어가 나타나는 횟수입니다.

##示例来在官方文档,详细说明见第一个例子
>>> import numpy as np
>>> X = np.random.randint(5, size=(6, 100)) ##返回随机整数值:范围[0,5) 大小6*100 6行100列
>>> y = np.array([1, 2, 3, 4, 5, 6])
>>> from sklearn.naive_bayes import MultinomialNB
>>> clf = MultinomialNB()
>>> clf.fit(X, y)
MultinomialNB(alpha=1.0, class_prior=None, fit_prior=True) 
>>> print(clf.predict(X[2]))
[3]

3) Bernoulli Naive Bayes: 각 특성은 Boolean 유형이며 결과는 0 또는 1, 즉 나타나지 않습니다.

##示例来在官方文档,详细说明见第一个例子
>>> import numpy as np
>>> X = np.random.randint(2, size=(6, 100))
>>> Y = np.array([1, 2, 3, 4, 4, 5])
>>> from sklearn.naive_bayes import BernoulliNB
>>> clf = BernoulliNB()
>>> clf.fit(X, Y)
BernoulliNB(alpha=1.0, binarize=0.0, class_prior=None, fit_prior=True) 
>>> print(clf.predict(X[2]))
[3]

추가 참고 사항: 이 문서는 아직 완벽하지 않습니다. 또한 예제 1에 작성해야 할 몇 가지 지침이 있으며, 이는 점차적으로 개선될 예정입니다. 미래에.

위 내용은 Python에서 Naive Bayes 알고리즘을 사용하는 방법에 대한 자세한 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.