机器学习

一、监督学习(输入数据是由输入特征值和目标值所组成)
①分类,目标值为离散型
1.数据集划分
sklearn.model_selection.train_test_split(arrays, *options)
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.3)
2.K-近邻算法
sklearn.neighbors.KNeighborsClassifier(n_neighbors=5,algorithm='auto')
knn = KNeighborsClassifier(n_neighbors=1)
knn.fit(x_train, y_train)
y_predict = knn.predict(x_test)
knn.score(x_test, y_test)
小数据场景,几千~几万样本,具体场景具体业务去测试
3.朴素贝叶斯
sklearn.naive_bayes.MultinomialNB(alpha = 1.0)  # alpha:拉普拉斯平滑系数
mlb = MultinomialNB(alpha=1.0)
mlb.fit(x_train, y_train)
y_predict = mlb.predict(x_test)
mlb.score(x_test, y_test)
由于使用了样本属性独立性的假设,所以如果特征属性有关联时其效果不好
4.决策树
sklearn.tree.DecisionTreeClassifier(criterion=’gini’, max_depth=None,random_state=None)
dc = DecisionTreeClassifier(max_depth=5)
dc.fit(x_train, y_train)
dc.score(x_test, y_test)
决策树学习者可以创建不能很好地推广数据的过于复杂的树,这被称为过拟合
5.随机森林
sklearn.ensemble.RandomForestClassifier(n_estimators=10, criterion=’gini’, max_depth=None, bootstrap=True, random_state=None, min_samples_split=2)
rf = RandomForestClassifier()
param = {"n_estimators": [120,200,300,500,800,1200], "max_depth": [5, 8, 15, 25, 30]}
gc = GridSearchCV(rf, param_grid=param, cv=2)
gc.fit(x_train, y_train)
gc.score(x_test, y_test)
能够有效地运行在大数据集上,处理具有高维特征的输入样本,而且不需要降维
能够评估各个特征在分类问题上的重要性
6.逻辑回归
sklearn.linear_model.LogisticRegression(solver='liblinear', penalty=‘l2’, C = 1.0)

lr = LogisticRegression()
lr.fit(x_train, y_train)
print("得出来的权重:", lr.coef_)
print("预测的类别:", lr.predict(x_test))
print("预测的准确率:", lr.score(x_test, y_test))

分类评估报告API
sklearn.metrics.classification_report(y_true, y_pred, labels=[], target_names=None )
print("精确率和召回率为:", classification_report(y_test, lr.predict(x_test), labels=[2, 4], target_names=['良性', '恶性']))

AUC计算API
sklearn.metrics.roc_auc_score(y_true, y_score)
roc_auc_score(y_test, lr.predict(x_test))
AUC的最小值为0.5,最大值为1,取值越高越好
6.模型选择与调优
sklearn.model_selection.GridSearchCV(estimator, param_grid=None,cv=None)
knn = KNeighborsClassifier()
gc = GridSearchCV(knn, param_grid=param, cv=2)
gc.fit(x_train, y_train)
print("选择了某个模型测试集当中预测的准确率为:", gc.score(x_test, y_test))
print("在交叉验证当中验证的最好结果:", gc.best_score_)
print("gc选择了的模型K值是:", gc.best_estimator_)
print("每次交叉验证的结果为:", gc.cv_results_)
②回归,目标值为连续型
1.线性回归
优化函数:
1.正规方程
sklearn.linear_model.LinearRegression(fit_intercept=True)
通过正规方程优化
2.梯度下降SGD
sklearn.linear_model.SGDRegressor(loss="squared_loss", fit_intercept=True, learning_rate ='invscaling', eta0=0.01)
通过使用SGD优化
3.回归性能评估
均方误差:sklearn.metrics.mean_squared_error(y_true, y_pred)
# 使用正规方程求解
lr = LinearRegression()
lr.fit(x_train, y_train)
lr.predict(x_test)
print("正规方程的均方误差为:", mean_squared_error(y_test, y_lr_predict))
# 梯度下降进行预测
sgd = SGDRegressor()
sgd.fit(x_train, y_train)
sgd.predict(x_test)
 print("SGD的均方误差为:", mean_squared_error(y_test, y_sgd_predict))
小规模数据:岭回归 
大规模数据:SGDRegressor
2.岭回归
1.具有l2正则化的线性回归
sklearn.linear_model.Ridge(alpha=1.0)  # alpha:正则化力度,也叫 λ
2.具有l2正则化的线性回归,可以进行交叉验证
sklearn.linear_model.RidgeCV(_BaseRidgeCV, RegressorMixin)

rd = Ridge(alpha=1.0)
rd.fit(x_train, y_train)
rd.predict(x_test)
print("岭回归的均方误差为:", mean_squared_error(y_test, y_rd_predict))
③模型保存和加载
lr = LinearRegression()
lr.fit(x_train, y_train)
# 保存训练完结束的模型
joblib.dump(lr, "test.pkl")
# 加载
model = joblib.load("test.pkl")
print("从文件加载进来的模型预测房价的结果:", model.predict(x_test))
二、无监督学习(输入数据是由输入特征值所组成)
①K-means(K均值聚类)
sklearn.cluster.KMeans(n_clusters=8,init=‘k-means++)
km = KMeans(n_clusters=4)
km.fit(cust)
pre = km.predict(cust)
Kmeans性能评估指标
sklearn.metrics.silhouette_score(X, labels)
silhouette_score(特征值, 被聚类标记的目标值)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值