Python 의 지원 벡터 기 SVM 사용(인 스 턴 스 코드 첨부)
1.sklearn 알고리즘 패키지 가 져 오기
Scikit-learn 라 이브 러 리 는 모든 기본 기계 학습 알고리즘 을 실 현 했 습 니 다.구체 적 인 사용 은 공식 문서 설명 을 참조 하 십시오http://scikit-learn.org/stable/auto_examples/index.html
skleran 에 많은 알고리즘 이 통합 되 어 있 습 니 다.가방 을 가 져 오 는 방식 은 다음 과 같 습 니 다.
논리 회귀:from sklearn.linearmodel import LogisticRegression
소박 한 베 이 루스:from sklearn.naivebayes import GaussianNB
K-근린:from sklearn.neighbors import KNeighbors Classifier
의사 결정 트 리:from sklearn.tree import 의사 결정 트 리 분류 기
벡터 지원:from sklearn import svm
2.sklearn 에서 svc 의 사용
(1)numpy 의 loadtxt 를 사용 하여 데이터 파일 을 읽 습 니 다.
loadtxt()의 사용 방법:
fname:파일 경로.eg:C:/Dataset/iris.txt。
dtype:데이터 형식.eg:float,str 등.
delimiter:구분자.eg:‘,'。
converters:데이터 열 과 변환 함 수 를 매 핑 하 는 사전 입 니 다.eg:{1:fun}은 두 번 째 열 에 대응 하 는 변환 함 수 를 변환 하 는 것 을 의미 합 니 다.
usecols:데이터 의 열 을 선택 하 십시오.
Iris 난초 데이터 세트 를 예 로 들 면:
UCI 데이터베이스 에서 다운로드 한 Iris 원본 데이터 세트 의 모양 이 이 렇 기 때문에 앞의 4 열 은 특징 열 이 고 다섯 번 째 열 은 유형 열 이 며 각각 세 가지 유형 인 Iris-setosa,Iris-versicolor,Iris-virginica 가 있다.
numpy 의 loadtxt 함 수 를 사용 하여 이 데이터 세트 를 가 져 올 때 데이터 형식 dtype 을 부동 소수점 형 으로 가정 하지만 다섯 번 째 열의 데이터 형식 은 부동 소수점 형 이 아 닌 것 이 분명 합 니 다.
따라서 우 리 는 loadtxt()함수 중의 converters 인 자 를 통 해 다섯 번 째 열 을 변환 함 수 를 통 해 부동 소수점 형식의 데이터 로 표시 하 는 작업 을 추가 해 야 합 니 다.
우선,우 리 는 변환 함 수 를 써 야 한다.
def iris_type(s):
it = {'Iris-setosa': 0, 'Iris-versicolor': 1, 'Iris-virginica': 2}
return it[s]
다음 데 이 터 를 읽 습 니 다.converters={4:iristype:}에서"4"는 5 열 을 말 합 니 다.
path = u'D:/f /python/ /iris.data' #
data = np.loadtxt(path, dtype=float, delimiter=',', converters={4: iris_type})
읽 기 결과:(2)아이 리 스 를 훈련 집 과 테스트 집 으로 나눈다.
x, y = np.split(data, (4,), axis=1)
x = x[:, :2]
x_train, x_test, y_train, y_test = train_test_split(x, y, random_state=1, train_size=0.6)
1.split(데이터,분할 위치,축=1(수평 분할)or 0(수직 분할).2.x=x[::2]는 후기 에 그림 을 그 리 는 것 을 편리 하 게 하기 위해 앞의 두 열 특징 치 벡터 훈련 만 취 했다.
3. sklearn.model_selection.train_test_split 는 무 작위 로 훈련 집 과 테스트 집 을 나눈다.train_test_split(train_data,train_target,test_size=숫자,randomstate=0)
매개 변수 설명:
(3)svm 분류 기 훈련
# clf = svm.SVC(C=0.1, kernel='linear', decision_function_shape='ovr')
clf = svm.SVC(C=0.8, kernel='rbf', gamma=20, decision_function_shape='ovr')
clf.fit(x_train, y_train.ravel())
kernel='linear'일 때 선형 핵 이 고 C 가 클 수록 분류 효과 가 좋 지만 너무 적합 할 수 있 습 니 다(defaul C=1).kernel='rbf'시(default)는 고 스 핵 이 고 gamma 값 이 작 을 수록 분류 인터페이스 가 연속 적 입 니 다.gamma 수치 가 클 수록 분류 인터페이스 가'산'될 수록 분류 효과 가 좋 지만 너무 적합 할 수 있 습 니 다.
decision_function_shape='ovr'일 때 원 v rest,즉 하나의 유형 과 다른 유형 으로 구분 합 니 다.
decision_function_shape='ovo'시 one v one 으로 분류 두 사 이 를 구분 하고 두 가지 분류 방법 으로 다 중 분류 결 과 를 모 의 합 니 다.
(4)svc 분류 기의 정확 도 를 계산한다.
print clf.score(x_train, y_train) #
y_hat = clf.predict(x_train)
show_accuracy(y_hat, y_train, ' ')
print clf.score(x_test, y_test)
y_hat = clf.predict(x_test)
show_accuracy(y_hat, y_test, ' ')
결 과 는:의사 결정 함 수 를 보 려 면 decision 을 통 해function()구현
print 'decision_function:
', clf.decision_function(x_train)
print '
predict:
', clf.predict(x_train)
결 과 는:decision_function 에서 각 열의 값 은 각종 다른 거 리 를 대표 합 니 다.
(5)그림 그리 기
1.좌표 축 범 위 를 확정 하고 x,y 축 은 각각 두 가지 특징 을 나타 낸다.
x1_min, x1_max = x[:, 0].min(), x[:, 0].max() # 0
x2_min, x2_max = x[:, 1].min(), x[:, 1].max() # 1
x1, x2 = np.mgrid[x1_min:x1_max:200j, x2_min:x2_max:200j] #
grid_test = np.stack((x1.flat, x2.flat), axis=1) #
# print 'grid_test =
', grid_testgrid_hat = clf.predict(grid_test) # grid_hat = grid_hat.reshape(x1.shape) #
mgrid()함 수 를 사 용 했 습 니 다.이 함수 의 역할 은 여기 서 간단하게 소개 합 니 다.목표 함수 F(x,y)=x+y 를 가정 합 니 다.x 축 범위 1~3,y 축 범위 4~6,그림 을 그 릴 때 주로 4 단계 로 나 누 어 진행:
[step 1:x 확장](오른쪽으로 확장):
[1 1 1]
[2 2 2]
[3 3 3]
[step 2:y 확장](아래로 확장):
[4 5 6]
[4 5 6]
[4 5 6]
[step 3:포 지 셔 닝(xi,yi)]:
[(1,4) (1,5) (1,6)]
[(2,4) (2,5) (2,6)]
[(3,4) (3,5) (3,6)]
[step 4:(xi,yi)를 F(x,y)=x+y 에 대 입하 기]
그래서 여기 x1,x2=np.mgrid[x1min:x1_max:200j, x2_min:x2_max:200 j]후의 결 과 는:
stack()함수,axis=1 을 통 해 테스트 점 을 생 성 합 니 다.
2.기본 글꼴 지정
mpl.rcParams['font.sans-serif'] = [u'SimHei']
mpl.rcParams['axes.unicode_minus'] = False
3.그리 기
cm_light = mpl.colors.ListedColormap(['#A0FFA0', '#FFA0A0', '#A0A0FF'])
cm_dark = mpl.colors.ListedColormap(['g', 'r', 'b'])
plt.pcolormesh(x1, x2, grid_hat, cmap=cm_light)
plt.scatter(x[:, 0], x[:, 1], c=y, edgecolors='k', s=50, cmap=cm_dark) #
plt.scatter(x_test[:, 0], x_test[:, 1], s=120, facecolors='none', zorder=10) #
plt.xlabel(u' ', fontsize=13)
plt.ylabel(u' ', fontsize=13)
plt.xlim(x1_min, x1_max)
plt.ylim(x2_min, x2_max)
plt.title(u' SVM ', fontsize=15)
# plt.grid()
plt.show()
pcolormesh(x,y,z,cmap)여기 매개 변 수 는 x1,x2,grid 를 대 입 합 니 다.hat,cmap=cm_light 는 배경 을 그립 니 다.scatter 에서 edgecolors 는 점 의 가장자리 색 채 를 묘사 하 는 것 을 말 합 니 다.s 는 점 의 크기,cmap 가 가리 키 는 색 을 말 합 니 다.
xlim 그림 의 경계.
최종 결 과 는:
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Python의 None과 NULL의 차이점 상세 정보그래서 대상 = 속성 + 방법 (사실 방법도 하나의 속성, 데이터 속성과 구별되는 호출 가능한 속성 같은 속성과 방법을 가진 대상을 클래스, 즉 Classl로 분류할 수 있다.클래스는 하나의 청사진과 같아서 하나의 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.