Изменения

Перейти к: навигация, поиск

Уменьшение размерности

1754 байта добавлено, 22:53, 20 января 2019
Нет описания правки
===Примеры кода scikit-learn===
Пример кода, реализующего фильтр функцию оценки фильтра на основе коэффициента ранговой корреляции:<syntaxhighlight lang=python> // Импорт библиотек import pandas as pd import numpy as np // Вспомогательная функция для расчета корреляции def correlation(X, Y): return np.cov(X, Y) / np.sqrt(np.var(X) * np.var(Y))
// Сам фильтр на основе метрики ранговой корреляции // Аргументы X -- значения объектов датасета для какой-то фичи, Y -- метки этих объектов def correlationmeasure_spearmans(X, Y): return np xr = pd.covSeries(X, Y) / np.sqrtrank(np) yr = pd.varSeries(XY) * np.varrank(Y) return correlation(xr, yr)
def measure_spearmans(XПример кода, Y)реализующего SVM-RFE wrapper: xr = // Импорт библиотек import numpy as np import pandas as pd.Series(X).rank() yr = pd.Series(Y).rank() from sklearn import svm
return correlation // X -- наш датасет, Y -- массив меток // N -- число признаков, которые хотим оставить, step -- сколько фичей удаляется на каждой итерации // Возвращает массив из булевых переменных размерностью 1x[число признаков], показывающий, отбрасываем признак или нет def RFE(xrX, Y, N, yrstep = 10):< /syntaxhighlight/ cache_size нужен, если датасет большой, иначе можно опустить clfRFE = svm.SVC(kernel='linear', cache_size=1024) featureCount = X.shape[1] featureList = np.arange(0, featureCount ) included = np.full(featureCount, True) curCount = featureCount while curCount >N: actualFeatures = featureList[included] Xnew = X[:, actualFeatures] clfRFE.fit(Xnew, Y) curStep = min(step, curCount - N) elim = np.argsort(np.abs(clfRFE.coef_[0]))[:curStep] included[actualFeatures[elim]] = False curCount -= curStep return included
==Feature extraction==
===Linear===
25
правок

Навигация