# 机器学习算法一览（附python和R代码）

“谷歌的无人车和机器人得到了很多关注，但我们真正的未来却在于能够使电脑变得更聪明，更人性化的技术，机器学习。 ”

—— 埃里克 施密特（谷歌首席执行官）

1. 监督式学习

2. 无监督式学习

3. 强化学习

1.线性回归 (Linear Regression)

2.逻辑回归 (Logistic Regression)

3.决策树 (Decision Tree)

4.支持向量机（SVM）

5.朴素贝叶斯 (Naive Bayes)

6.K邻近算法（KNN）

7.K-均值算法（K-means）

8.随机森林 (Random Forest)

9.降低维度算法（Dimensionality Reduction Algorithms）

1.线性回归 (Linear Regression)

Y- 因变量

a- 斜率

X- 自变量

b- 截距

a和b可以通过最小化因变量误差的平方和得到（最小二乘法）。

Python 代码

```#Import Library
#Import other necessary libraries like pandas， numpy...
fromsklearn importlinear_model
#Load Train and Test datasets
#Identify feature and response variable(s) and values must be numeric and numpy arrays
x_train=input_variables_values_training_datasets
y_train=target_variables_values_training_datasets
x_test=input_variables_values_test_datasets
# Create linear regression object
linear =linear_model.LinearRegression()
# Train the model using the training sets and check score
linear.fit(x_train，y_train)
linear.score(x_train，y_train)
#Equation coefficient and Intercept
print('Coefficient： \n'，linear.coef_)
print('Intercept： \n'，linear.intercept_)
#Predict Output
predicted=linear.predict(x_test)```

R 代码

```#Load Train and Test datasets
#Identify feature and response variable(s) and values must be numeric and numpy arrays
x_train <-input_variables_values_training_datasets
y_train <-target_variables_values_training_datasets
x_test <-input_variables_values_test_datasets
x <-cbind(x_train，y_train)
# Train the model using the training sets and check score
linear <-lm(y_train ~.，data =x)
summary(linear)
#Predict Output
predicted=predict(linear，x_test)```

2.逻辑回归

```odds= p/ (1-p) = probability of event occurrence / probability of not event occurrence
ln(odds) = ln(p/(1-p))
logit(p) = ln(p/(1-p)) = b0+b1X1+b2X2+b3X3....+bkXk```

Python 代码

```#Import Library
fromsklearn.linear_model importLogisticRegression
#Assumed you have， X (predictor) and Y (target) for training data set and x_test(predictor) of test_dataset
# Create logistic regression object
model =LogisticRegression()
# Train the model using the training sets and check score
model.fit(X，y)
model.score(X，y)
#Equation coefficient and Intercept
print('Coefficient： \n'，model.coef_)
print('Intercept： \n'，model.intercept_)
#Predict Output
predicted=model.predict(x_test)```

R 代码

```x <-cbind(x_train，y_train)
# Train the model using the training sets and check score
logistic <-glm(y_train ~.，data =x，family='binomial')
summary(logistic)
#Predict Output
predicted=predict(logistic，x_test)```

3.决策树

Python 代码

```#Import Library
#Import other necessary libraries like pandas， numpy...
fromsklearn importtree
#Assumed you have， X (predictor) and Y (target) for training data set and x_test(predictor) of test_dataset
# Create tree object
model =tree.DecisionTreeClassifier(criterion='gini')# for classification， here you can change the algorithm as gini or entropy (information gain) by default it is gini
# model = tree.DecisionTreeRegressor() for regression
# Train the model using the training sets and check score
model.fit(X，y)
model.score(X，y)
#Predict Output
predicted=model.predict(x_test)```

R 代码

```library(rpart)
x <-cbind(x_train，y_train)
# grow tree
fit <-rpart(y_train ~.，data =x，method="class")
summary(fit)
#Predict Output
predicted=predict(fit，x_test)```

4. 支持向量机（SVM）

Python 代码

```#Import Library
fromsklearn importsvm
#Assumed you have， X (predictor) and Y (target) for training data set and x_test(predictor) of test_dataset
# Create SVM classification object
model =svm.svc()# there is various option associated with it， this is simple for classification. You can refer link， for mo# re detail.
# Train the model using the training sets and check score
model.fit(X，y)
model.score(X，y)
#Predict Output
predicted=model.predict(x_test)```

R 代码

```library(e1071)
x <-cbind(x_train，y_train)
# Fitting model
fit <-svm(y_train ~.，data =x)
summary(fit)
#Predict Output
predicted=predict(fit，x_test)```

5. 朴素贝叶斯

P(c|x)是已知特征x而分类为c的后验概率。

P(c)是种类c的先验概率。

P(x|c)是种类c具有特征x的可能性。

P(x)是特征x的先验概率。

Python 代码

```#Import Library
fromsklearn.naive_bayes importGaussianNB
#Assumed you have， X (predictor) and Y (target) for training data set and x_test(predictor) of test_dataset
# Create SVM classification object model = GaussianNB() # there is other distribution for multinomial classes like Bernoulli Naive Bayes， Refer link
# Train the model using the training sets and check score
model.fit(X，y)
#Predict Output
predicted=model.predict(x_test)```

R 代码

```library(e1071)
x <-cbind(x_train，y_train)
# Fitting model
fit <-naiveBayes(y_train ~.，data =x)
summary(fit)
#Predict Output
predicted=predict(fit，x_test)```

6.KNN（K-邻近算法）

KNN在生活中的运用很多。比如，如果你想了解一个不认识的人，你可能就会从这个人的好朋友和圈子中了解他的信息。

KNN的计算成本很高

Python 代码

```#Import Library
fromsklearn.neighbors importKNeighborsClassifier
#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)```

R 代码

```library(knn)
x <-cbind(x_train，y_train)
# Fitting model
fit <-knn(y_train ~.，data =x，k=5)
summary(fit)
#Predict Output
predicted=predict(fit，x_test)```

7. K均值算法（K-Means）

K均值算法如何划分集群：

Python 代码

```#Import Library
fromsklearn.cluster importKMeans
#Assumed you have， X (attributes) for training data set and x_test(attributes) of test_dataset
# Create KNeighbors classifier object model
k_means =KMeans(n_clusters=3，random_state=0)
# Train the model using the training sets and check score
model.fit(X)
#Predict Output
predicted=model.predict(x_test)```

R 代码

```library(cluster)
fit <-kmeans(X，3)# 5 cluster solution```

8.随机森林

```Introduction to Random forest – Simplified
Comparing a CART model to Random Forest (Part 1)
Comparing a Random Forest to a CART model (Part 2)
Tuning the parameters of your Random Forest model```

Python 代码

```#Import Library
fromsklearn.ensemble importRandomForestClassifier
#Assumed you have， X (predictor) and Y (target) for training data set and x_test(predictor) of test_dataset
# Create Random Forest object
model=RandomForestClassifier()
# Train the model using the training sets and check score
model.fit(X，y)
#Predict Output
predicted=model.predict(x_test)```

R 代码

```library(randomForest)
x <-cbind(x_train，y_train)
# Fitting model
fit <-randomForest(Species~.，x，ntree=500)
summary(fit)
#Predict Output
predicted=predict(fit，x_test)```

9.降维算法

9.降维算法（Dimensionality Reduction Algorithms）

Python 代码

```#Import Library
fromsklearn importdecomposition
#Assumed you have training and test data set as train and test
# Create PCA obeject pca= decomposition.PCA(n_components=k) #default value of k =min(n_sample， n_features)
# For Factor analysis
#fa= decomposition.FactorAnalysis()
# Reduced the dimension of training dataset using PCA
train_reduced =pca.fit_transform(train)
#Reduced the dimension of test dataset
test_reduced =pca.transform(test)```

R 代码

```library(stats)
pca <-princomp(train，cor =TRUE)
train_reduced <-predict(pca，train)
test_reduced <-predict(pca，test)```

Python 代码

```#Import Library
#Assumed you have， X (predictor) and Y (target) for training data set and x_test(predictor) of test_dataset
# Create Gradient Boosting Classifier object
# Train the model using the training sets and check score
model.fit(X，y)
#Predict Output
predicted=model.predict(x_test)```

R 代码

```library(caret)
x <-cbind(x_train，y_train)
# Fitting model
fitControl <-trainControl(method ="repeatedcv"，number =4，repeats =4)
fit <-train(y ~.，data =x，method ="gbm"，trControl =fitControl，verbose =FALSE)
predicted=predict(fit，x_test，type="prob")[，2]```

◆ ◆ ◆

0 条评论

• ### 怎样入手学习R的算法？

文 | 陆勤 来源 | 数据人网 R是目前学习R语言中应用最广泛的平台。当你认真起来学习R的时候你会找到学习R的窍门。 它之所以功能强大是因为很多机器学习的算法...

• ### 非计算机专业如何转行AI，找到算法offer？

目前，各行业都在尝试着用机器学习/深度学习来解决自身行业的需求。在这个过程中，最为稀缺的也是高质量人工智能人才。 这一年我们见证了不断有非计算机专业学生转行人工...

• ### 数据报告 | 华为、小米、联想……在老外眼中，谁是中国手机界的「网红」？

本文由星云纵横（北京）大数据信息技术有限公司投稿至「CDA数据分析师」，转载请获得授权并标明出处 今天下午，小米将与中国联通联合举行发布会，推出一款千元新旗舰。...

• ### 【机器学习】10 种机器学习算法的要点

前言 谷歌董事长施密特曾说过：虽然谷歌的无人驾驶汽车和机器人受到了许多媒体关注，但是这家公司真正的未来在于机器学习，一种让计算机更聪明、更个性化的技术。 也许我...

• ### 【源码】机器学习算法清单！附Python和R代码

本文约6000字，建议阅读8分钟。 通过本文为大家介绍了3种机器学习算法方式以及10种机器学习算法的清单，学起来吧~ 前言 谷歌董事长施密特曾说过：虽然谷歌的无...

• ### 10 种机器学习算法的要点（附 Python 和 R 代码）

本文由 伯乐在线 - Agatha 翻译，唐尤华 校稿。 英文出处：SUNIL RAY。欢迎加入翻译组。 前言 谷歌董事长施密特曾说过：虽然谷歌的无人驾驶汽车和...

• ### 【算法】10 种机器学习算法要点

小编邀请您，先思考： 1 你熟悉那些机器学习算法？ 2 你如何应用机器学习算法？ 前言 谷歌董事长施密特曾说过：虽然谷歌的无人驾驶汽车和机器人受到了许多媒体关注...

• ### 机器学习算法清单！附Python和R代码

来源：数据与算法之美 通过本文为大家介绍了3种机器学习算法方式以及10种机器学习算法的清单，学起来吧~ 前言 谷歌董事长施密特曾说过：虽然谷歌的无人驾驶汽车和机...

• ### 十种深度学习算法要点及代码解析

谷歌董事长施密特曾说过：虽然谷歌的无人驾驶汽车和机器人受到了许多媒体关注，但是这家公司真正的未来在于机器学习，一种让计算机更聪明、更个性化的技术。 也许我们生活...

CDA数据分析师新媒体运营