(123)
오기 NP AS NumPy와 오기 SKC AS sklearn.cluster 에서 sklearn를 가져 메트릭 가져 오기 PLT AS matplotlib.pyplot mac2id = 딕셔너리 () onlinetimes = [] F = 열기 ( ' D : \ python_source \ Machine_study \ MOOC 코스 데이터 \ 프로그램 데이터 \ 클러스터링 \ 학생 개월 시간 온라인 유통 -TestData.txt ' , 인코딩 = ' UTF-8 ' ) 에 대한 라인 에 F : 맥 = line.split ( ' , ' ) [2] # 얻을 MAC 주소 onlinetime = INT (line.split ( ', ' ) [6]) #의 액세스 시간 (초) startTime을 = INT (line.split ( ' , ' [. 4) .split ( ' ' ) .split ([1.] ' : ' ) [0]) # 소스 데이터 2014-07-2022 : 44 : 18.540000000 22은 추출 된 IF MAC 없음 에 mac2id : mac2id [MAC] = LEN (onlinetimes) #의 사전 키 맥 ?? 부가가치 때 인터넷 접속 시간과 긴 / 0,1,2,3,4,5,6,7 onlinetimes.append (onlinetime (startTime을)) 그렇지 않으면 : onlinetimes [mac2id [MAC] = [(startTime을 onlinetime)] real_XNp.array = (onlinetimes) .reshape (. (- 1, 2)) # 2 차원 배열 X- = real_X [. 0, 1] # 1 시점부터 추출 # 개 . S의 = np.log (real_X + 1을 : 1]), 대수 변환 #의 출력 (S) DB = skc.DBSCAN (EPS = 0.01 = 20 min_samples이다 ) .fit (X-) # Lables 각 데이터 클러스터 라벨로서 Lables = db.labels_ 인쇄 ( ' Lables은 : ' ) 전단 (Lables) #에게 태그의 7 종류 # 출력 잡음 비율 라이토 렌 (Lables [Lables [:] == -1] =) / LEN (Lables) 인쇄 ( " 잡음 라이토 : ' , 형식 (라이토, ' 0.2 %' )) N_clusters = LEN (SET (Lables)) - (1. IF -1 에서 Lables 다른 0) #의 소음 -1, 소음, 6 급 == 7-1가있는 경우 인쇄 ( ' 클러스터의 예상 nuber % D ' %의 n_clusters) 인쇄 ( " silhouetts입니다 계수 %의 0.3f " %의 metrics.silhouette_score (X-, Lables)) #의 클러스터링 유효성 에 대한 I 의 범위 (n_clusters) : 인쇄 ( ' 클러스터 ' , I, ' : ' ) 인쇄(리스트 (X [lables == I] .flatten ())) plt.hist (X, 24 ) plt.show ()
렌더링