91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 5KB
    文件類型: .py
    金幣: 1
    下載: 0 次
    發布日期: 2021-06-15
  • 語言: Python
  • 標簽: PARZEN??K近鄰??

資源簡介

PARZEN窗和K近鄰算法的python實現。
現實生活中常常會有這樣的問題:缺乏足夠的先驗知識,因此難以人工標注類別或進行人工類別標注的成本太高。很自然地,我們希望計算機能代我們完成這些工作,或至少提供一些幫助。根據類別未知(沒有被標記)的訓練樣本解決模式識別中的各種問題,稱之為無監督學習。

資源截圖

代碼片段和文件信息

import?math
import?numpy?as?np
import?matplotlib.pyplot?as?plt
from?mpl_toolkits.mplot3d?import?Axes3D?
#%matplotlib?inline



def?eudistance(x?y):
????return?np.sqrt(np.sum(np.square(x?-?y)))
????
#計算超球體的超球體
def?calcualate_V(rd):
????if?d?==?1:
????????return?2?*?r
????elif?d?==?2:
????????return?math.pi?*?(r?**2)
????elif?d?%?2?==?0:
????????k?=?d?/?2
????????return?(math.pi?**?k)?*?(r?**?d)?/?(math.factorial(k))
????else:
????????k?=?(d?-?1)?/?2
????????return?(math.pi?**?k)?*(2?**?(2?*?k?+?1))?*?(math.factorial(k))?*?(r?**?d)?/?(math.factorial(2?*?k?+?1))


def?cube(u):
????u?=?np.abs(u)
????if?(u?<=?0.5).all():
????????return?1
????return?0


def?knn(Data?X?kn?d?f):
????n?=?len(Data)
????Prob?=?[]
????for?x?in?X:
????????dis?=?[]
????????for?s?in?Data:
????????????#dis.append(f(x?s))
????????????dis.append(abs(x-s))
????????dis.sort()
????????v?=?calcualate_V(dis[kn-1]d)
????????Prob.append(kn?/?(n?*?v))
????return?np.array(Prob)


def?parzen(Data?X?h?d?f):
????Prob?=?[]
????n?=?len(Data)
????for?x?in?X:
????????p?=?0.0
????????for?s?in?Data:
????????????p?+=?f((s?-?x)?/?h)
????????Prob.append(p?/?(n?*?(h**d)))
????return?np.array(Prob)


def?test_1D_KNN():
????
????Data?=?np.random.randn(100)
????X?=?np.arange(-5?5?0.01)
????plt.figure(dpi=200)

????Prob1?=?knn(Data?X?kn=10?*?2?d=1?f=eudistance)
????ax?=?plt.subplot(2?2?1)
????
????ax.set_title(“n=100“)
????ax.plot(X?Prob1)


????Data?=?np.random.randn(1000)
????Prob2?=?knn(Data?X?kn=32?*?5?d=1?f=eudistance)
????ax?=?plt.subplot(2?2?2)
????ax.set_title(“n=1000“)
????ax.plot(X?Prob2)

????Data?=?np.random.randn(10000)
????Prob3?=?knn(Data?X?kn=100?*?8?d=1?f=eudistance)
????ax?=?plt.subplot(2?2?3)
????ax.set_title(“n=10000“)
????ax.plot(X?Prob3)

????Data?=?np.random.randn(100000)
????Prob4?=?knn(Data?X?kn=316?*?10?d=1?f=eudistance)
????ax?=?plt.subplot(2?2?4)
????ax.set_title(“n=100000“)
????ax.plot(X?Prob4)


????plt.tight_layout()?#設置默認的間距

????plt.show()


def?test_1D_parzen():
????
????Data?=?np.random.randn(100)
????X?=?np.arange(-5?5?0.01)
????plt.figure(dpi=200)

????Prob1?=?parzen(Data?X?h=2.5?d=1?f=cube)
????ax?=?plt.subplot(2?2?1)
????
????ax.set_title(“n=100“)
????ax.plot(X?Prob1)


????Data?=?np.random.randn(1000)
????Prob2?=?parzen(Data?X?h=2.5?d=1?f=cube)
????ax?=?plt.subplot(2?2?2)
????ax.set_title(“n=1000“)
????ax.plot(X?Prob2)

????Data?=?np.random.ran

評論

共有 條評論

相關資源