Серия «Введение в машинное обучение» (2) — Как создать полноценный проект машинного обучения, часть 8!
Первые семь статей цикла:
- Серия «Введение в машинное обучение» (2) — «Как создать полноценный проект по машинному обучению» (1)
- Получение наборов данных машинного обучения и построение наборов тестов
- Предварительная обработка данных для разработки признаков (часть 1)
- Предварительная обработка данных для разработки признаков (часть 2)
- Масштабирование функций и кодирование функций для разработки функций
- Разработка функций (конец)
- Резюме и сравнение часто используемых алгоритмов машинного обучения (часть 1)
В предыдущей статье были представлены четыре алгоритма линейной регрессии, логистической регрессии, дерева решений и случайного леса, В этой статье будут представлены четыре алгоритма - SVM, Naive Bayes, KNN и алгоритм kmean, последний из которых - обучение без учителя Первые три также очень распространенные алгоритмы, особенно SVM.До успеха сети AlexNet в 2012 году это всегда был очень часто используемый алгоритм классификации при классификации изображений.
5. Машина опорных векторов (SVM)
Кратко
определение: SVM — это модель классификации с двумя классами, базовая модель которой определяется какЛинейный классификатор с наибольшей маржей в пространстве признаков, то есть стратегия обучения машины опорных векторов таковаинтервальная максимизация, которое окончательно может быть преобразовано в решение задачи выпуклого квадратичного программирования.
Или это можно просто понимать как поиск разумной гиперплоскости в многомерном пространстве для разделения точек данных, что включает в себя отображение нелинейных данных в многомерные данные для достижения цели линейно разделимых данных.
Когда обучающие данные линейно разделимы,Максимальное жесткое расстояние, выучить линейный классификатор, т.е.Линейный можно разделить на опорную векторную машину, также известный как SVM с жесткими границами; когда обучающие данные приблизительно линейно разделимы,Максимальное мягкое расстояние, также изучите линейный классификатор, а именно линейную машину опорных векторов, также известную как машину опорных векторов с мягкими краями; когда обучающие данные линейно неделимы, с помощьюХитрости ядра и максимизация мягкого интервала, изучить нелинейные машины опорных векторов.
Первоначальный SVM представляет собой классификатор с двумя классами, но он также был расширен для задач классификации с несколькими классами.Существуют следующие улучшения для решения задач классификации с несколькими классами:
1. Прямой метод
Модификации вносятся непосредственно в целевую функцию, котораяРешение параметров нескольких поверхностей классификации, объединенных в одну задачу оптимизации, мультиклассификация может быть достигнута путем решения этой оптимизации.
Однако вычислительная сложность высока, и это трудно реализовать. Этот метод обычно редко используется
2. Косвенный метод, косвенный метод делится на следующие категории:
- один ко многим: устанавливайте один из классов в качестве одного класса каждый раз, когда вы тренируетесь, и устанавливайте все остальные классы в качестве другого класса.
Например, есть четыре класса A, B, C, D, в первый раз A — это класс, B, C, D — это класс, обучите классификатор, во второй раз B — это класс, а затем A, C, D — это класс A, обучающий классификатор и так далее. Итак, если всего есть n классов, вы в конечном итоге обучите n классификаторов.
При тестировании тестовые образцы направляются во все классификаторы соответственно, а в качестве результата его классификации используется категория с максимальным значением. Это связано с тем, что чем больше расстояние до поверхности классификации, тем больше доверия к классификации.
этого методаПреимущество заключается в том, что размер каждой задачи оптимизации относительно невелик, а скорость классификации очень высока., так как количество классификаторов и количество категорий совпадают, однако иногда бывают две ситуации: для тестовой выборки каждый классификатор получает принадлежность к категории классификатора или не относится к категории любой классификатор.Первое называется явлением перекрывания классификаций, а второе называется неклассифицируемым явлением.. Первый может произвольно выбрать результат или разделить его в соответствии с его расстоянием до каждой гиперплоскости, в зависимости от того, какая категория находится дальше, а второй может быть отнесен только к новой n+1-й категории.Самым большим недостатком является то, что из-за использования n-1 категорий в качестве категории количество категорий будет в несколько раз больше, чем категорий только с 1 категорией, что искусственно вызовет проблему перекоса набора данных..
- один на один: Классификатор обучается для любых двух классов, а окончательный результат выбирается голосованием при прогнозировании.
СюдаТакже будут пересекающиеся классификации, но неклассифицируемых явлений не будет., потому что невозможно, чтобы все категории имели 0 голосов. Этот метод будет более эффективным, фактически для каждой обучающей выборки используются только два типа данных, и прогноз будет относительно стабильным, ноНедостатком является то, что время прогнозирования будет долгим.
Преимущества и недостатки
преимущество
- Используйте функции ядра для сопоставления с многомерными пространствами
- Нелинейную классификацию можно решить с помощью функций ядра.
- Идея классификации очень проста: максимально увеличить интервал между выборкой и поверхностью решения.
- лучшая классификация
недостаток
- Сложно обучать на больших данных
- Не может поддерживать множественную классификацию напрямую, но это можно сделать с помощью косвенных методов.
- Шум также влияет на производительность SVM, потому что SVM в основном определяется небольшим количеством опорных векторов.
Код
Реализация кода линейного SVM:
from sklearn import datasets
import numpy as np
from sklearn.cross_validation import train_test_split
iris = datasets.load_iris() # 由于Iris是很有名的数据集,scikit-learn已经原生自带了。
X = iris.data[:, [2, 3]]
y = iris.target # 标签已经转换成0,1,2了
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=0) # 为了看模型在没有见过数据集上的表现,随机拿出数据集中30%的部分做测试
# 为了追求机器学习和最优化算法的最佳性能,我们将特征缩放
from sklearn.preprocessing import StandardScaler
sc = StandardScaler()
sc.fit(X_train) # 估算每个特征的平均值和标准差
sc.mean_ # 查看特征的平均值,由于Iris我们只用了两个特征,所以结果是array([ 3.82857143, 1.22666667])
sc.scale_ # 查看特征的标准差,这个结果是array([ 1.79595918, 0.77769705])
X_train_std = sc.transform(X_train)
# 注意:这里我们要用同样的参数来标准化测试集,使得测试集和训练集之间有可比性
X_test_std = sc.transform(X_test)
X_combined_std = np.vstack((X_train_std, X_test_std))
y_combined = np.hstack((y_train, y_test))
# 导入SVC
from sklearn.svm import SVC
svm = SVC(kernel='linear', C=1.0, random_state=0) # 用线性核,你也可以通过kernel参数指定其它的核。
svm.fit(X_train_std, y_train)
# 打印决策边界,这个函数是我自己写的,如果你想要的话,我发给你
plot_decision_regions(X_combined_std, y_combined, classifier=svm, test_idx=range(105,150))
plt.xlabel('petal length [standardized]')
plt.ylabel('petal width [standardized]')
plt.legend(loc='upper left')
plt.show()
Далее идет код, использующий нелинейный SVM:
svm = SVC(kernel='rbf', random_state=0, gamma=x, C=1.0) # 令gamma参数中的x分别等于0.2和100.0
svm.fit(X_train_std, y_train) # 这两个参数和上面代码中的训练集一样
plot_decision_regions(X_combined_std, y_combined, classifier=svm, test_idx=range(105,150))
plt.xlabel('petal length [standardized]')
plt.ylabel('petal width [standardized]')
plt.legend(loc='upper left')
plt.show()
6. Наивный Байес
Кратко
Наивный БайесЭто метод классификации, основанный на теореме Байеса и предположении о независимости признаков.
теорема БайесаОн рассчитывается на основе условной вероятности.Условная вероятность заключается в решении вероятности возникновения события A в предположении, что возникновение события B известно, то есть
Итак, теорема Байеса выглядит так:
Наивный байесовский классификатор может быть выражен как:
Здесь P (y_k) — априорная вероятность, а P (y_k | x) — апостериорная вероятность, Цель наивного Байеса — максимизировать апостериорную вероятность, что эквивалентно минимизации ожидаемого риска.
Наивный Байес делится на три модели в зависимости от того, являются ли функции дискретными или нет, следующим образом:
- Байесовская оценка/полиномиальные модели: используйте эту модель, когда функция является дискретной;
- Гауссова модель: модель используется, когда функция является непрерывной;
- модель Бернулли: функция является дискретной и может принимать только значения 0 и 1.
Преимущества и недостатки
преимущество
- Он хорошо работает с небольшими данными, подходит для задач множественной классификации и подходит для добавочного обучения.
недостаток
- Он очень чувствителен к представлению входных данных (дискретные, непрерывные, максимальные и минимальные значения и т. д.).
Сравнение логистической регрессии и наивного Байеса
Та же точка
- обаЛинейное представление функций;
- Обе модели являются условными вероятностями, и окончательные результаты классификацииочень хорошее объяснение.
Отличие от логистической регрессии
-
Наивный Байес — это генеративная модель., прежде чем вычислять P(y|x), сначала вычислить вероятность P(x|y) и P(y) из обучающих данных, чтобы использовать формулу Байеса для вычисления P(y|x).
Логистическая регрессия - дискриминантная модель, который изучается путем максимизации дискриминантной функции P(y|x) в обучающем наборе данных, не зная P(x|y) и P(y) .
-
Наивный Байес основан нагипотеза условной независимостиИсходя из этого, предположим, что признак X содержит n атрибутов признака (X1, X2,...Xn), тогда данные Y, X1, X2,...Xn условно независимы.
Ограничения логистической регрессии:намного свободнее, если данные соответствуют допущению условной независимости, можно получить очень хорошие результаты; когда данные не соответствуют допущению условной независимости, логистическая регрессия все же может скорректировать параметры, чтобы модель максимизировала распределение данных, так что обучение можно получить при существующем наборе данных оптимальную модель.
-
Наивный байесовский подход следует использовать, когда набор данных мал., для достижения хороших результатов требуется объем данных O(log n)
Когда набор данных относительно велик, следует использовать логистическую регрессию., для достижения хороших результатов требуется объем данных O(n)
Код
Ниже приведено использованиеsklearn
Примеры кода соответственно реализуют три вышеуказанные модели, примеры взяты изТри часто используемые модели наивного Байеса: гауссовская, полиномиальная, бернуллиевская..
Во-первых, это реализация модели Гаусса:
>>> from sklearn import datasets
>>> iris = datasets.load_iris()
>>> iris.feature_names # 四个特征的名字
['sepal length (cm)', 'sepal width (cm)', 'petal length (cm)', 'petal width (cm)']
>>> iris.data
array([[ 5.1, 3.5, 1.4, 0.2],
[ 4.9, 3. , 1.4, 0.2],
[ 4.7, 3.2, 1.3, 0.2],
[ 4.6, 3.1, 1.5, 0.2],
[ 5. , 3.6, 1.4, 0.2],
[ 5.4, 3.9, 1.7, 0.4],
[ 4.6, 3.4, 1.4, 0.3],
[ 5. , 3.4, 1.5, 0.2],
......
[ 6.5, 3. , 5.2, 2. ],
[ 6.2, 3.4, 5.4, 2.3],
[ 5.9, 3. , 5.1, 1.8]]) #类型是numpy.array
>>> iris.data.size
600 #共600/4=150个样本
>>> iris.target_names
array(['setosa', 'versicolor', 'virginica'],
dtype='|S10')
>>> iris.target
array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,....., 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, ......, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2])
>>> iris.target.size
150
>>> from sklearn.naive_bayes import GaussianNB
>>> clf = GaussianNB()
>>> clf.fit(iris.data, iris.target)
>>> clf.predict(iris.data[0])
array([0]) # 预测正确
>>> clf.predict(iris.data[149])
array([2]) # 预测正确
>>> data = numpy.array([6,4,6,2])
>>> clf.predict(data)
array([2]) # 预测结果很合理
Далее полиномиальная модель выглядит следующим образом:
>>> import numpy as np
>>> X = np.random.randint(5, size=(6, 100))
>>> y = np.array([1, 2, 3, 4, 5, 6])
>>> from sklearn.naive_bayes import MultinomialNB
>>> clf = MultinomialNB()
>>> clf.fit(X, y)
MultinomialNB(alpha=1.0, class_prior=None, fit_prior=True)
>>> print(clf.predict(X[2]))
[3]
Стоит отметить, что полиномиальная модель после обучения на одном наборе данных может продолжить обучение на других наборах данных без одновременного обучения двух наборов данных. В sklearn метод partial_fit() класса MultinomialNB() может выполнять такое обучение. Этот метод особенно подходит для случая, когда обучающая выборка слишком велика, чтобы уместиться в памяти за один раз.
в первый звонокpartial_fit()
Должны быть указаны все классификационные метки.
>>> import numpy
>>> from sklearn.naive_bayes import MultinomialNB
>>> clf = MultinomialNB()
>>> clf.partial_fit(numpy.array([1,1]), numpy.array(['aa']), ['aa','bb'])
GaussianNB()
>>> clf.partial_fit(numpy.array([6,1]), numpy.array(['bb']))
GaussianNB()
>>> clf.predict(numpy.array([9,1]))
array(['bb'],
dtype='|S2')
Модель Бернулли выглядит следующим образом:
>>> import numpy as np
>>> X = np.random.randint(2, size=(6, 100))
>>> Y = np.array([1, 2, 3, 4, 4, 5])
>>> from sklearn.naive_bayes import BernoulliNB
>>> clf = BernoulliNB()
>>> clf.fit(X, Y)
BernoulliNB(alpha=1.0, binarize=0.0, class_prior=None, fit_prior=True)
>>> print(clf.predict(X[2]))
[3]
7. Алгоритм КНН
Кратко
k-ближайшие соседи (KNN) — это базовый метод классификации и регрессии.
Идея заключается в следующем: учитывая набор обучающих данных и новый экземпляр, найдите k ближайших обучающих экземпляров к новому экземпляру в наборе обучающих данных, а затем подсчитайте k ближайших обучающих экземпляров.Класс с наибольшим количеством классов, который является классом нового экземпляра. Его процесс выглядит следующим образом:
- Вычислить расстояние между каждой точкой выборки в обучающей выборке и тестовой выборке (общие показатели расстояния включают евклидово расстояние, расстояние Махаланобиса и т. д.);
- Отсортируйте все значения расстояния выше;
- Выберите первые k образцов с наименьшим расстоянием;
- Голосуйте в соответствии с метками этих k образцов, чтобы получить окончательную классификационную категорию;
Частным случаем KNN является случай, когда k=1, называемыйалгоритм ближайшего соседа. Для входной точки экземпляра (вектора признаков) x метод ближайшего соседа принимает класс ближайшего соседа к x в обучающем наборе данных в качестве своей категории.
Три элемента
- Выбор значения k
- Мера расстояния (обычные меры расстояния включают евклидово расстояние, расстояние Махаланобиса)
- Правило принятия решения о классификации (правило большинства голосов)
Выбор значения k
- Чем меньше значение k, тем сложнее модель и тем выше вероятность ее переобучения.,ТотНебольшое отклонение, но большая дисперсия
- ноЧем больше значение k, тем проще модель, если k=N, то это означает, что независимо от того, какая точкаБольшинство классов в тренировочном набореКласс , в этом случае,Большое отклонение, маленькая дисперсия.
Так что обычно k возьмет aменьшее значение, затем использовали перекрестную проверку для определенияТак называемая перекрестная проверка здесь состоит в том, чтобы разделить часть выборки на выборки прогнозов, например, 95% обучения, 5% прогнозов, а затем принять k как 1, 2, 3, 4, 5 и т. д., чтобы сделать прогнозы. , и вычислите окончательную ошибку классификации, выберите k с наименьшей ошибкой
мера расстояния
Расстояние, используемое алгоритмом KNN, обычно является евклидовым расстоянием или может быть более общим расстоянием Lp или расстоянием Махаланобиса, где расстояние Lp определяется следующим образом:
Возвращение КНН
После нахождения ближайших k экземпляров среднее значение этих k экземпляров можно рассчитать как прогнозируемое значение. Или вы можете добавить вес к экземплярам k, а затем усреднить,Этот вес обратно пропорционален метрическому расстоянию (чем ближе, тем больше вес)..
Преимущества и недостатки
преимущество
- Идея проста, теория зрелая, и ее можно использовать как для классификации, так и для регрессии.;
- Может использоваться какнелинейная классификация;
- Сложность времени обучения составляет O (n);
- Высокая точность, никаких предположений о данных, даВыбросыНе чувствительный;
недостаток
- Большой объем расчета;
- Пример проблемы дисбаланса(т.е. одни классы имеют большое количество образцов, а другие - малое);
- необходимостьмного памяти;
Код
использоватьsklearn
Простой пример кода:
#Import Library
from sklearn.neighbors import KNeighborsClassifier
#Assumed you have, X (predictor) and Y (target) for training data set and x_test(predictor) of test_dataset
# Create KNeighbors classifier object model
KNeighborsClassifier(n_neighbors=6) # default value for n_neighbors is 5
# Train the model using the training sets and check score
model.fit(X, y)
#Predict Output
predicted= model.predict(x_test)
Наконец,Перед использованием KNN необходимо учитывать:
- KNN требует больших вычислительных ресурсов
- Все функции должнынормированный порядок величины, иначе объекты с большим порядком величины будут смещены на вычисляемое расстояние.
- Перед КННПредварительно обработанные данные, такие как удаление выбросов, шума и т. д.
8. Алгоритм К-средних
Кратко
K-средние (Kmeans) — самый популярный алгоритм кластеризации, алгоритм берет немаркированный набор данных, а затем кластеризует набор данных в разные группы.
K-means — это итеративный алгоритм, предположим, что мы хотим сгруппировать данные в n групп следующим образом:
- Выберите первыйKслучайная точка, называемаяцентр кластера
- Для каждых данных в наборе данных по расстояниюKРасстояние между каждой центральной точкой, связать ее с ближайшей центральной точкой, и все точки, связанные с одной и той же центральной точкой, сгруппированы в один класс
- Рассчитать для каждой группыСредняя стоимость, переместите центральную точку, связанную с группой, в положение среднего
- Повторяйте шаги 2-3 до тех пор, пока центральная точка не перестанет меняться.
В этом процессе есть два основных шага, первый - второй шаг,Распределите точки выборки в обучающем наборе до ближайшего центра кластера в соответствии с их расстоянием от центра кластера., то второй - это третий шаг,Обновить Центр занятий, метод заключается в вычислении среднего значения всех выборок каждого класса, а затем использовании этого среднего значения в качестве нового значения центра класса, а затем продолжении этих двух шагов до тех пор, пока не будет достигнуто условие завершения, которое обычно относится к заданному количеству итерации.
Конечно, в этом процессе можно столкнуться с тем, что есть центр кластера, которому не назначены точки данных.Удалите этот центр кластера или повторно выберите центр кластера, чтобы количество центров кластера по-прежнему оставалось начальным набором K..
случайная инициализация
Перед запуском алгоритма K-средних необходимо случайным образом инициализировать все центральные точки кластера следующим образом:
- Во-первых, следует выбрать K
Количество центральных точек кластера должно быть меньше количества всех экземпляров обучающего набора. - Произвольно выберите K обучающих экземпляров, а затем установите K кластерных центров равными K обучающим экземплярам соответственно.
Одна проблема с K-средними заключается в том, чтоОн может оставаться на локальном минимуме, в зависимости от инициализации.
Чтобы решить эту проблему, обычно необходимо запустить алгоритм K-средних несколько раз, каждый раз повторно инициализируя случайным образом, и, наконец, сравнить результаты нескольких запусков K-средних и выбрать результат с наименьшей функцией стоимости.Этот метод находится вОн работает для малых K (2–10)**, но если K велик, этот подход может не улучшиться значительно.
Преимущества и недостатки
преимущество
- Алгоритм k-средних является классическим алгоритмом для решения задач кластеризации.Простой и быстрый алгоритм.
- Для обработки больших наборов данных алгоритмОтносительно масштабируемый и эффективный, потому что его сложность составляет около O(nkt), где n — количество всех объектов, k — количество кластеров, а t — количество итераций. Обычно kлокальная конвергенция.
- Алгоритмы пытаются выяснитьk делений, которые минимизируют значение квадрата функции ошибки. когда скопления плотные, сферические или похожие на комки, иСуществует четкое различие между кластерами, эффект кластеризации лучше.
недостаток
- Метод k-средних работает только в кластерахсреднее значение определеноЕго можно использовать только в случае , и он не подходит для данных некоторых классификационных признаков.
- Требуется, чтобы пользователь заранее указал количество k кластеров, которые необходимо сгенерировать.
- Чувствителен к начальному значению, для разных начальных значений это может привести к разным результатам кластеризации.
- Не подходит для поиска скоплений, которые не имеют выпуклой формы или сильно различаются по размеру..
- Чувствительные к «шуму» и выбросам данных, небольшое количество данных этого типа может иметь существенное влияние на среднее значение.
Код
Ссылка на код изK-Means Clustering.
#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
@Time : 2016/10/21 16:35
@Author : cai
实现 K-Means 聚类算法
"""
import numpy as np
import matplotlib.pyplot as plt
from scipy.io import loadmat
import os
# 寻址最近的中心点
def find_closest_centroids(X, centroids):
m = X.shape[0]
k = centroids.shape[0]
idx = np.zeros(m)
for i in range(m):
min_dist = 1000000
for j in range(k):
# 计算每个训练样本和中心点的距离
dist = np.sum((X[i, :] - centroids[j, :]) ** 2)
if dist < min_dist:
# 记录当前最短距离和其中心的索引值
min_dist = dist
idx[i] = j
return idx
# 计算聚类中心
def compute_centroids(X, idx, k):
m, n = X.shape
centroids = np.zeros((k, n))
for i in range(k):
indices = np.where(idx == i)
# 计算下一个聚类中心,这里简单的将该类中心的所有数值求平均值作为新的类中心
centroids[i, :] = (np.sum(X[indices, :], axis=1) / len(indices[0])).ravel()
return centroids
# 初始化聚类中心
def init_centroids(X, k):
m, n = X.shape
centroids = np.zeros((k, n))
# 随机初始化 k 个 [0,m]的整数
idx = np.random.randint(0, m, k)
for i in range(k):
centroids[i, :] = X[idx[i], :]
return centroids
# 实现 kmeans 算法
def run_k_means(X, initial_centroids, max_iters):
m, n = X.shape
# 聚类中心的数目
k = initial_centroids.shape[0]
idx = np.zeros(m)
centroids = initial_centroids
for i in range(max_iters):
idx = find_closest_centroids(X, centroids)
centroids = compute_centroids(X, idx, k)
return idx, centroids
dataPath = os.path.join('data', 'ex7data2.mat')
data = loadmat(dataPath)
X = data['X']
initial_centroids = init_centroids(X, 3)
# print(initial_centroids)
# idx = find_closest_centroids(X, initial_centroids)
# print(idx)
# print(compute_centroids(X, idx, 3))
idx, centroids = run_k_means(X, initial_centroids, 10)
# 可视化聚类结果
cluster1 = X[np.where(idx == 0)[0], :]
cluster2 = X[np.where(idx == 1)[0], :]
cluster3 = X[np.where(idx == 2)[0], :]
fig, ax = plt.subplots(figsize=(12, 8))
ax.scatter(cluster1[:, 0], cluster1[:, 1], s=30, color='r', label='Cluster 1')
ax.scatter(cluster2[:, 0], cluster2[:, 1], s=30, color='g', label='Cluster 2')
ax.scatter(cluster3[:, 0], cluster3[:, 1], s=30, color='b', label='Cluster 3')
ax.legend()
plt.show()
# 载入一张测试图片,进行测试
imageDataPath = os.path.join('data', 'bird_small.mat')
image = loadmat(imageDataPath)
# print(image)
A = image['A']
print(A.shape)
# 对图片进行归一化
A = A / 255.
# 重新调整数组的尺寸
X = np.reshape(A, (A.shape[0] * A.shape[1], A.shape[2]))
# 随机初始化聚类中心
initial_centroids = init_centroids(X, 16)
# 运行聚类算法
idx, centroids = run_k_means(X, initial_centroids, 10)
# 得到最后一次的最近中心点
idx = find_closest_centroids(X, centroids)
# map each pixel to the centroid value
X_recovered = centroids[idx.astype(int), :]
# reshape to the original dimensions
X_recovered = np.reshape(X_recovered, (A.shape[0], A.shape[1], A.shape[2]))
# plt.imshow(X_recovered)
# plt.show()
Полные примеры кода и данные можно просмотретьКод практики Kmeans.
резюме
Эти четыре алгоритма вкратце представляют так много контента, что в следующей статье будут представлены последние несколько распространенных алгоритмов, в том числе очень часто используемая в настоящее время сеть глубокого обучения — сверточная нейронная сеть.
Если у вас есть какие-либо предложения или идеи для этой статьи, вы можете оставить мне сообщение, спасибо!
Ссылаться на
- «Статистические методы обучения»
- Подробное объяснение SVM (включая то, почему его параметр C влияет на поведение классификатора) — scikit-learn, подбирающий линейный и нелинейный SVM
- Личное резюме распространенных алгоритмов машинного обучения (для интервью)
- Обзор алгоритма SVM-Support Vector Machine
- Алгоритмы машинного обучения и практика Python (2) Машина основных опорных векторов (SVM)
- Алгоритмы машинного обучения и практика Python (3) Advanced Support Vector Machine (SVM)
- Алгоритмы машинного обучения и практика Python (4) Реализация машины опорных векторов (SVM)
- [Распознавание образов] Функция ядра SVM
- Как выбрать функцию ядра SVM?
- Наивный байесовский вывод и три общие модели
- Три часто используемые модели наивного Байеса: гауссовская, полиномиальная, бернуллиевская.
- Заметки по машинному обучению и интеллектуальному анализу данных_16 (простая сортировка идей алгоритмов машинного обучения в обычных интервью)
- K-Means Clustering
- Открытый класс Стэнфордского университета: курс машинного обучения
Добро пожаловать, чтобы обратить внимание на мою общедоступную учетную запись WeChat — машинное обучение и компьютерное зрение, или отсканируйте QR-код ниже, давайте общаться, учиться и прогрессировать вместе!
Прекрасная рекомендация в прошлом
Серия машинного обучения
- Серия «Введение в машинное обучение» (1) — обзор машинного обучения
- Серия «Введение в машинное обучение» (2) — «Как создать полноценный проект по машинному обучению» (1)
- Получение наборов данных машинного обучения и построение наборов тестов
- Предварительная обработка данных для разработки признаков (часть 1)
- Предварительная обработка данных для разработки признаков (часть 2)
- Масштабирование функций и кодирование функций для разработки функций
- Разработка функций (конец)
- Резюме и сравнение часто используемых алгоритмов машинного обучения (часть 1)
Рекомендация руководства по проектам и ресурсам Github
- [Рекомендовано проектом Github] Лучший веб-сайт для чтения и поиска статей
- [Совместное использование ресурсов] Официальное руководство по китайской версии TensorFlow здесь
- Обязательные к прочтению блоги об искусственном интеллекте и глубоком обучении
- [Учебник] Простое для понимания руководство по TensorFlow.
- [Ресурс] Порекомендуйте несколько книг и руководств по Python, как вводных, так и продвинутых!
- [Рекомендация проекта Github] Шпаргалка по машинному обучению и знаниям Python