Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

Python에서 평균 이동 알고리즘 구현


머신 러닝에는 많은 유형의 클러스터링 알고리즘이 있습니다. 이러한 알고리즘은 Python에서 구현할 수 있습니다. 이 기사에서는 Python을 사용하여 'Mean-Shift' 알고리즘을 논의하고 구현해 보겠습니다. 비지도 학습 방법으로 사용되는 클러스터링 알고리즘입니다.

이 알고리즘에서는 가정이 이루어지지 않습니다. 이는 비모수적 알고리즘을 의미합니다. 이 알고리즘은 데이터 포인트를 특정 클러스터에 반복적으로 할당하며, 이는 이러한 데이터 포인트를 데이터 포인트 밀도가 가장 높은 쪽으로 이동하여 수행됩니다.

이 고밀도 데이터 포인트를 클러스터의 중심이라고 합니다. 평균 이동 알고리즘과 K 평균 클러스터링의 차이점은 이전(K-평균)에서 클러스터 수를 미리 지정해야 한다는 것입니다.

K는 존재하는 데이터를 기반으로 한 알고리즘을 의미하므로 클러스터의 수를 찾을 수 있기 때문입니다.

평균 이동 알고리즘의 단계를 이해합시다 -

  • 데이터 포인트는 자체 클러스터에 할당됩니다.

  • 그런 다음 이 클러스터의 중심이 결정됩니다.

  • 이 중심의 위치는 반복적으로 업데이트됩니다.

  • 다음으로 프로세스는 고밀도 영역으로 이동합니다.

  • 중심이 더 이상 이동할 수 없는 위치에 도달하면 프로세스가 중지됩니다.

scikit−learn −

를 사용하여 Python에서 구현하는 방법을 이해합시다.

예시

 sklearn.cluster에서 numpy로 가져오기 MeanShift에서 matplotlib.pyplot을 plt로 가져오기 matplotlib에서 stylestyle.use("ggplot")를 sklearn.datasets.samples_generator에서 가져오기 make_blobscenters =[[3,3,1],[4,5, 5],[11,10,10]]X, _ =make_blobs(n_samples =950, 중심 =중심, cluster_std =0.89)plt.title("평균 이동 알고리즘 구현")plt.xlabel("X축 ")plt.ylabel("Y축")plt.scatter(X[:,0],X[:,1])plt.show()ms =MeanShift()ms.fit(X)labels =ms. label_clusterCent =ms.cluster_centers_print(clusterCent)numCluster =len(np.unique(labels))print("예상 클러스터:", numCluster)colors =10*['r.','g.','b.',' c.','k.','y.','m.']범위 내 i에 대해(len(X)):plt.plot(X[i][0], X[i][1], 색상[레이블[i]], markersize =3)plt.scatter(clusterCent[:,0],clusterCent[:,1], marker=".",color='k', s=20, 선폭 =5, zorder=10)plt.show()

출력

Python에서 평균 이동 알고리즘 구현

[[ 3.05250924 3.03734994 1.06159541][ 3.92913017 4.99956874 4.86668482]예상 4.86668482][10.99127523 10.0286112] 

Python에서 평균 이동 알고리즘 구현

설명

  • 필요한 패키지를 가져오고 사용하기 쉽도록 별칭을 정의합니다.

  • 'ggplot'은 'style' 클래스에 있는 'use' 함수에 지정됩니다.

  • 'make_blobs' 함수는 데이터 클러스터를 생성하는 데 사용됩니다.

  • set_xlabel, set_ylabel 및 set_title 함수는 'X'축, 'Y'축 및 제목에 대한 레이블을 제공하는 데 사용됩니다.

  • 'MeanShift' 함수가 호출되어 변수에 할당됩니다.

  • 데이터가 모델에 적합합니다.

  • 레이블 및 클러스터 수가 정의됩니다.

  • 이 데이터가 플롯되고 모델에 맞는 데이터에 대한 산점도도 표시됩니다.

  • 'show' 기능을 사용하여 콘솔에 표시됩니다.