sklearn 특징 선택 라 이브 러 리 사용 소결
sklearn.feature_selection 모듈 은 특징 선택 알고리즘 을 실 현 했 는데 현 재 는 단일 변수 특징 선택 과 재 귀 특징 제거 등 을 포함한다.이 모듈 의 종 류 는 주로 특징 선택 이나 샘플 집합 에서 차원 을 낮 추고 알고리즘 의 정확 도 를 높이 거나 고위 데이터 집합 에서 표현 하 는 데 사용 된다.
①sklearn.feature_selection. Variance Threshold (threshold = 0.0): 특징의 분산 을 통 해 특징 을 추출 하고 기본 분산 이 0 인 특징 은 자동 으로 삭 제 됩 니 다.
In [1]: from sklearn.feature_selection import VarianceThreshold
...: X = [[0, 2, 0, 3], [0, 1, 4, 3], [0, 1, 1, 3]]
...: selector = VarianceThreshold()# threshold=0.0
...: selector.fit_transform(X)
...:
Out[1]:
array([[2, 0],
[1, 4],
[1, 1]])
In [6]: from sklearn.feature_selection import VarianceThreshold
...: X = [[0, 2, 0, 3], [0, 1, 4, 3], [0, 1, 1, 6]]
...: selector = VarianceThreshold(threshold=2)
...: selector.fit_transform(X)
...:
Out[6]:
array([[0],
[4],
[1]])
In [7]: selector.variances_
Out[7]: array([ 0. , 0.22222222, 2.88888889, 2. ])
In [2]: selector.variances_
Out[2]: array([ 0. , 0.22222222, 2.88888889, 0. ])
In [8]: from sklearn.feature_selection import VarianceThreshold
...: X = [[0, 2, 0, 3], [0, 1, 4, 3], [0, 1, 1, 6]]
...: st = VarianceThreshold(threshold=2)
...: st.fit(X)
...: print(type(st.fit(X)))
...: st.variances_
...:
Out[8]: array([ 0. , 0.22222222, 2.88888889, 2. ])
In [9]: selector.fit_transform(X)
Out[9]:
array([[0],
[4],
[1]])
In [10]: selector.get_params(deep=True)
Out[10]: {'threshold': 2}
In [11]: selector.get_support(False)
Out[11]: array([False, False, True, False], dtype=bool)
In [12]: selector.get_support(True)
Out[12]: array([2], dtype=int64)
In [13]: selector.inverse_transform(selector.fit_transform(X))
Out[13]:
array([[0, 0, 0, 0],
[0, 0, 4, 0],
[0, 0, 1, 0]])
In [14]: selector.set_params(threshold=1)
Out[14]: VarianceThreshold(threshold=1)
In [15]: X2= [[0, 2, 0, 3], [0, 1, 4, 3], [0, 1, 1, 3]]
...: selector.transform(X2)
...:
Out[15]:
array([[0, 3],
[4, 3],
[1, 3]])
②sklearn.feature_selection. GenericUnivariate Select (score func =, mode = 'percentile', param = 1e - 05): 서로 다른 정책 을 설정 하여 단일 변수 특징 선택 을 할 수 있 고 초 매개 변수 변조 와 함께 최 적 단일 변수 선택 전략 을 선택 할 수 있 습 니 다.
매개 변수 설명:
score_func: 리 셋 함수, 함 수 는 X 와 y 두 개의 배열 을 받 아들 이 고 (scores, pvalues) 모듈 을 되 돌려 줍 니 다.
mode: 특징 선택 모드, 옵션 가능: 'percentile', 'kbest’, ‘fpr’, ‘fdr’, ‘fwe’
In [1]: from sklearn.datasets import load_iris
...: from sklearn.feature_selection import chi2
...: from sklearn.feature_selection import GenericUnivariateSelect
...: iris = load_iris()
...: X,y = iris.data , iris.target
...: s = GenericUnivariateSelect(score_func =chi2, mode='k_best',param=2)
...: s.fit_transform(X,y)
...:
Out[1]:
array([[ 1.4, 0.2],
[ 1.4, 0.2],
[ 1.3, 0.2],
[ 1.5, 0.2],
[ 1.4, 0.2],
[ 1.7, 0.4],
.....
[ 5.4, 2.3],
[ 5.1, 1.8]])
scores_속성: 각 특징의 score 보기In [2]: s.scores_
Out[2]: array([ 10.81782088, 3.59449902, 116.16984746, 67.24482759])
pvalues_속성: 특징 별 P 값 보기In [3]: s.pvalues_
Out[3]:
array([ 4.47651499e-03, 1.65754167e-01, 5.94344354e-26,
2.50017968e-15])
③sklearn.feature_selection. selectKfest (score func =, k = 10): scores 는 오름차 순 으로 정렬 하고 앞 에 있 는 k 명 에 대응 하 는 특징 을 선택 합 니 다.
매개 변수 설명: k 정수 또는 all
속성 값:
In [1]: from sklearn.datasets import load_iris
...: from sklearn.feature_selection import SelectKBest,chi2
...: iris = load_iris()
...: X,y = iris.data,iris.target
...: s = SelectKBest(chi2, k='all').fit(X,y)
...:
In [2]: s.scores_
Out[2]: array([ 10.81782088, 3.59449902, 116.16984746, 67.24482759])
In [3]: s.pvalues_
Out[3]:
array([ 4.47651499e-03, 1.65754167e-01, 5.94344354e-26,
2.50017968e-15])
In [4]: sk =SelectKBest(chi2, k=2).fit(X,y)
In [5]: sk.scores_
Out[5]: array([ 10.81782088, 3.59449902, 116.16984746, 67.24482759])
In [6]: sk.pvalues_
Out[6]:
array([ 4.47651499e-03, 1.65754167e-01, 5.94344354e-26,
2.50017968e-15])
방법:
In [7]: sk.fit_transform(X,y)
Out[7]:
array([[ 1.4, 0.2],
[ 1.4, 0.2],
[ 1.3, 0.2],
...
[ 5.2, 2. ],
[ 5.4, 2.3],
[ 5.1, 1.8]])
In [8]: sk.get_support(indices=False)
Out[8]: array([False, False, True, True], dtype=bool)
In [9]: sk.get_support(indices=True)
Out[9]: array([2, 3], dtype=int64)
In [11]: sk.inverse_transform(sk.fit_transform(X,y))
Out[11]:
array([[ 0. , 0. , 1.4, 0.2],
[ 0. , 0. , 1.4, 0.2],
[ 0. , 0. , 1.3, 0.2],
[ 0. , 0. , 1.5, 0.2],
....
[ 0. , 0. , 5.4, 2.3],
[ 0. , 0. , 5.1, 1.8]])
In [3]: sk.transform(X)
Out[3]:
array([[ 1.4, 0.2],
[ 1.4, 0.2],
[ 1.3, 0.2],
[ 1.5, 0.2],
...
[ 5.4, 2.3],
[ 5.1, 1.8]])
④sklearn.feature_selection. select Percentile (score func =, percentile = 10): scores 는 오름차 순 으로 정렬 하여 100% percentile 에 대응 하 는 특징 을 선택 하 십시오.In [1]: from sklearn.datasets import load_iris
...: from sklearn.feature_selection import SelectPercentile,chi2
...: iris = load_iris()
...: X, y = iris.data, iris.target
...: sp=SelectPercentile(chi2, percentile=33).fit(X,y)
...: print(sp.scores_)
...: X_new = sp.fit_transform(X,y)
...: X_new[:10]
...:
[ 10.81782088 3.59449902 116.16984746 67.24482759]
Out[1]:
array([[ 1.4],
[ 1.4],
[ 1.3],
[ 1.5],
[ 1.4],
[ 1.7],
[ 1.4],
[ 1.5],
[ 1.4],
[ 1.5]])
In [2]: from sklearn.datasets import load_iris
...: from sklearn.feature_selection import SelectPercentile,chi2
...: iris = load_iris()
...: X, y = iris.data, iris.target
...: sp=SelectPercentile(chi2, percentile=34).fit(X,y)
...: print(sp.scores_)
...: X_new = sp.fit_transform(X,y)
...: X_new[:10]
...:
[ 10.81782088 3.59449902 116.16984746 67.24482759]
Out[2]:
array([[ 1.4, 0.2],
[ 1.4, 0.2],
[ 1.3, 0.2],
[ 1.5, 0.2],
[ 1.4, 0.2],
[ 1.7, 0.4],
[ 1.4, 0.3],
[ 1.5, 0.2],
[ 1.4, 0.2],
[ 1.5, 0.1]])
상기 percentile = 33 을 이해 하지 못 했 을 때 하나의 특징 만 선택 하고 percentile = 34 시 에 두 가지 특징 을 선택 했다. 이 비례 치 는 어떻게 계산 합 니까?남 겨 진 문제⑤sklearn.feature_selection. selectFpr (score func =, alpha = 0.05): alpha 의 기본 값 은 0.05 이 며, 특징의 pvalues 를 걸 러 냅 니 다.지정 한 알파 보다 높 은 특징
In [3]: from sklearn.datasets import load_iris
...: from sklearn.feature_selection import SelectFpr,chi2
...: iris = load_iris()
...: X, y = iris.data, iris.target
...: sp=SelectFpr(chi2, alpha=0.05).fit(X,y)
...:
In [4]: sp.pvalues_
Out[4]:
array([ 4.47651499e-03, 1.65754167e-01, 5.94344354e-26,
2.50017968e-15])
In [5]: sp.get_support(indices=True)
Out[5]: array([0, 2, 3], dtype=int64)
⑥sklearn.feature_selection. selectFdr (score func =, alpha = 0.05) 는 SelectFpr 와 유사 합 니 다.In [6]: from sklearn.datasets import load_iris
...: from sklearn.feature_selection import SelectFdr,chi2
...: iris = load_iris()
...: X, y = iris.data, iris.target
...: sp=SelectFdr(chi2, alpha=0.004).fit(X,y)
...:
In [7]: sp.pvalues_
Out[7]:
array([ 4.47651499e-03, 1.65754167e-01, 5.94344354e-26,
2.50017968e-15])
In [8]: sp.get_support(indices=True)
Out[8]: array([2, 3], dtype=int64)
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
쓰쿠바 대학의 기계 학습 강좌 : 과제의 파이썬 스크립트 부분을 만들면서 sklearn 공부 (10)지난번 이번에는 이상치가 있는 경우 Youtube의 해설은 제6회(1)55분 30초당 프로그램은 2행 더 강좌에서는 최초의 값을 바꾸고 있는 것 같지만, 하나 추가해도 거기까지 변화는 없을 것 같다. 이것은 실행 결...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.