当前位置: 首页 > news >正文

建设部官网网站龙岩今天刚刚最新新闻事件

建设部官网网站,龙岩今天刚刚最新新闻事件,炫富做图网站,厦门市建设局综合业务平台网站IDE为Jupyter Notebook scikit-learn官网 scikit-learn是一个专门用于机器学习的工具包 运用到啥函数不知道咋使用#xff1f;戳它–scikit-learn工具包的API文档 不知道用啥模板#xff1f;戳它–scikit-learn样例模型 功能翻译Classification分类Regression回归Cl…IDE为Jupyter Notebook scikit-learn官网 scikit-learn是一个专门用于机器学习的工具包 运用到啥函数不知道咋使用戳它–scikit-learn工具包的API文档 不知道用啥模板戳它–scikit-learn样例模型 功能翻译Classification分类Regression回归Clustering聚类Dimensionality reduction降维算法Model selection模型选择Preprocessing数据预处理 一、首先导入相关的工具包以及x轴y轴字体大小设置 import numpy as np import os %matplotlib inline import matplotlib import matplotlib.pyplot as plt plt.rcParams[axes.labelsize] 14 plt.rcParams[xtick.labelsize] 12 plt.rcParams[ytick.labelsize] 12 import warnings warnings.filterwarnings(ignore) np.random.seed(42)二、数据集读取 使用的数据集是sklearn内置数据集MNIST手写数字识别数据集70000张灰度图像的数字大小为(28,28,1)28 * 28 * 1784每一个图像样本都有784个像素点可以的等价于784个特征。 免费MNIST手写数字识别数据集下载 将下载好的mnist-original放到C:\Users\MyPC\scikit_learn_data下创建一个mldata文件夹 #查看下路径 from sklearn.datasets.base import get_data_home print (get_data_home())#C:\Users\MyPC\scikit_learn_datafrom sklearn.datasets import fetch_openml mnist fetch_openml(mnist_784)#手写数字识别数据集量少好观察 print(mnist)#数据集中X是mnist里面存放类似字典的结构里面所有数据的key是datay是标签存放target #Xmnist将data传入ymnist将target传入 X, y mnist[data], mnist[target] X.shape#(70000, 784) 当前样本数量一共7w个78428*28*1 y.shape#(70000,) 第一行标签为0第二行标签为1以此类推共70000行#前6w张当作训练集training后1w张当作测试集testing #1-6w 这6w个样本为训练集training、6w到最后7w 这1w个样本为testing测试集 X_train, X_test, y_train, y_test X[:60000], X[60000:], y[:60000], y[60000:]# 因为是数据之间是独立的故需要洗牌操作将training训练集和testing测试集打乱顺序 import numpy as npshuffle_index np.random.permutation(60000)#打算数据集的index X_train, y_train X_train[shuffle_index], y_train[shuffle_index]#回传给数据集相当于洗牌打乱操作#原始index值为012...打乱顺序之后的index如下所示 shuffle_index#array([12628, 37730, 39991, ..., 860, 15795, 56422])三、交叉验证 由上几步可得将数据集的前6w为训练集training后1w为测试集testing 首先将整个数据集分为两部分训练集和测试集其中测试集相当于高考测试集是非常非常宝贵的东西仅此一次。故为了效果更好需要中途在进行几次模拟考试类似期中期末考试这时候需要从训练集中再抽取出一部分充当期中期末考试即验证集validation。 例如training中有5份样本交叉验证就是将这5份打乱依次从中随机抽取1份为validation剩下的为training。然后每次通过模型去训练得出一个预测结果求取平均值即可。 # 为了简单起见这里只判断样本是否是5 y_train_5 (y_train5)#是否是5 y_test_5 (y_test5)#将10分类转换为2分类进行演示#训练集前十个样本是不是5 y_train_5[:10]#array([False, False, False, False, False, False, False, False, False, True])SGDClassifier的方法详细参数 #SGDClassifier 梯度下降分类器 from sklearn.linear_model import SGDClassifier sgd_clf SGDClassifier(max_iter5,random_state42)#max_iter最大迭代次数random_state随机种子每次随机策略都一样 sgd_clf.fit(X_train,y_train_5)#通过SGD训练分类器SGDClassifier(alpha0.0001, averageFalse, class_weightNone,early_stoppingFalse, epsilon0.1, eta00.0, fit_interceptTrue,l1_ratio0.15, learning_rateoptimal, losshinge, max_iter5,n_iterNone, n_iter_no_change5, n_jobsNone, penaltyl2,power_t0.5, random_state42, shuffleTrue, tolNone,validation_fraction0.1, verbose0, warm_startFalse)#训练完成之后对该分类器进行测试预测35000这个样本是5为啥然后进行通过索引查下是否是5 sgd_clf.predict([X[35000]])#array([ True])#通过索引验证下35000样本是否是5 y[35000]#5.0Ⅰ交叉验证的实现 cross_val_score方法的详细参数 参数一将训练的模型传入进来 参数二传入当前的训练数据 参数三当前的标签 参数四cv3表示把数据集切分成3分最后进行3次交叉验证会输出3个交叉验证的结果 参数五使用什么指标进行评估得分,accuracy表示使用准确率来进行评估from sklearn.model_selection import cross_val_score cross_val_score(sgd_clf,X_train,y_train_5,cv3,scoringaccuracy)#array([0.9502 , 0.96565, 0.96495])X_train.shape#(60000, 784)#训练的时候传入了6w个样本y_train_5.shape#(60000,)Ⅱ自己对数据集进行切分训练预测 StratifiedKFold方法的详细参数 clone方法的详细参数 因为把数据集切分为多份每一份都需要用的和原来一样的分类器相同的模型相同的参数。 交叉验证为了保证公平每次传入的参数都是相同的。为了保证公平使用了clone方法。 from sklearn.model_selection import StratifiedKFold from sklearn.base import cloneskflods StratifiedKFold(n_splits3,random_state42)#将数据集分成3分随机种子这里设置的为42 for train_index,test_index in skflods.split(X_train,y_train_5):#对每一份数据集进行fit操作split方法切分数据集和标签clone_clf clone(sgd_clf)#克隆分类器X_train_folds X_train[train_index]#通过索引找图片样本y_train_folds y_train_5[train_index]#这三类训练和测试数据都要来源于trainingX_test_folds X_train[test_index]y_test_folds y_train_5[test_index]clone_clf.fit(X_train_folds,y_train_folds)y_pred clone_clf.predict(X_test_folds)n_correct sum(y_pred y_test_folds)print(n_correct/len(y_pred))0.9502 0.96565 0.96495四、Confusion Matrix-混淆矩阵 已知条件一个班100人男80女20。 目标找出所有女生。 结果从班里面找了50人其中20个女的30个男的。 相关Relevant正类无关NonRelevant负类被检索到RetrievedTrue PositivesTP正类判定为正类即准确判断出这是为女生False PositivesFP负类判定为正类“存伪”即分明是男生却判断出是女生没被检索到NotRetrievedFalse NegativesFN正类判定为负类“去真”即分明是女生却判断出是男生True Negatives,TN负类判定为负类即一个男生被判定是男生 故TP20FP30FN0TN50 cross_val_predict方法的详细参数 参数一分类器的名称 参数二训练集 参数三标签 参数四分成几份from sklearn.model_selection import cross_val_predict y_train_pred cross_val_predict(sgd_clf,X_train,y_train_5,cv3)y_train_pred.shape#(60000,)#训练的时候传入了6w个样本得到6w个样本的预测结果X_train.shape#(60000, 784)confusion_matrix方法的详细参数 一般的混淆矩阵参数为2×2 参数一训练值 参数二实际预测结果from sklearn.metrics import confusion_matrix confusion_matrix(y_train_5,y_train_pred)array([[53272, 1307],[ 1077, 4344]], dtypeint64)对于array数组中参数分析 五、Precision精度 and Recall召回率 Positives5 Negatives ≠5 precision_score方法的详细参数 recall_score方法的详细参数 from sklearn.metrics import precision_score,recall_score precision_score(y_train_5,y_train_pred)#0.7687135020350381recall_score(y_train_5,y_train_pred)#0.801328168234643将Precision 和 Recall结合到一个称为F1 score 的指标,调和平均值给予低值更多权重。 因此如果召回和精确度都很高分类器将获得高F 1分数。 f1_score方法的详细参数 from sklearn.metrics import f1_score f1_score(y_train_5,y_train_pred)#0.7846820809248555六、阈值对结果的影响 decision_function方法的详细参数 y_scores sgd_clf.decision_function([X[35000]]) y_scores#array([43349.73739616])t 50000 y_pred (y_scores t)#设置阈值 y_pred#array([False])Scikit-Learn不允许直接设置阈值但它可以得到决策分数调用其decision_function方法而不是调用分类器的predict方法该方法返回每个实例的分数然后使用想要的阈值根据这些分数进行预测 y_scores cross_val_predict(sgd_clf, X_train, y_train_5, cv3, methoddecision_function)y_scores[:10]array([ -434076.49813641, -1825667.15281624, -767086.76186905,-482514.55006702, -466416.8082872 , -311904.74603814,-582112.5580173 , -180811.15850786, -442648.13282116,-87710.09830358])from sklearn.metrics import precision_recall_curve precisions, recalls, thresholds precision_recall_curve(y_train_5, y_scores)y_train_5.shape#(60000,)#6w个样本thresholds.shape#(59698,)#59698个阈值precisions[:10]array([0.09080706, 0.09079183, 0.09079335, 0.09079487, 0.09079639,0.09079792, 0.09079944, 0.09080096, 0.09080248, 0.090804 ])precisions.shape#(59699,)#59699个阈值recalls.shape#(59699,)#59699个阈值对于不同的阈值随着阈值的变换精度和召回率变换的情况如下 def plot_precision_recall_vs_threshold(precisions,recalls,thresholds):plt.plot(thresholds,precisions[:-1],b--,labelPrecision)plt.plot(thresholds,recalls[:-1],g-,labelRecall)plt.xlabel(Threshold,fontsize16)plt.legend(locupper left,fontsize16)plt.ylim([0,1])plt.figure(figsize(8, 4)) plot_precision_recall_vs_threshold(precisions,recalls,thresholds) plt.xlim([-700000, 700000]) plt.show()随着Recall的变换Precision的变换如下 def plot_precision_vs_recall(precisions, recalls):plt.plot(recalls, precisions, b-, linewidth2)plt.xlabel(Recall, fontsize16)plt.ylabel(Precision, fontsize16)plt.axis([0, 1, 0, 1])plt.figure(figsize(8, 6)) plot_precision_vs_recall(precisions, recalls) plt.show()七、ROC curves常用 receiver operating characteristic (ROC) 曲线是二元分类中的常用评估方法 ①它与精确度/召回曲线非常相似但ROC曲线不是绘制精确度与召回率而是绘制true positive rate(TPR) 与false positive rate(FPR) ②要绘制ROC曲线首先需要使用roc_curve函数计算各种阈值的TPR和FPR TPR TP / (TP FN) (Recall) FPR FP / (FP TN) from sklearn.metrics import roc_curve fpr, tpr, thresholds roc_curve(y_train_5, y_scores)def plot_roc_curve(fpr, tpr, labelNone):plt.plot(fpr, tpr, linewidth2, labellabel)plt.plot([0, 1], [0, 1], k--)plt.axis([0, 1, 0, 1])plt.xlabel(False Positive Rate, fontsize16)plt.ylabel(True Positive Rate, fontsize16)plt.figure(figsize(8, 6)) plot_roc_curve(fpr, tpr) plt.show()虚线表示纯随机分类器的ROC曲线; 一个好的分类器尽可能远离该线朝左上角。 比较分类器的一种方法是测量曲线下面积AUC。完美分类器的ROC AUC等于1而纯随机分类器的ROC AUC等于0.5。 Scikit-Learn提供了计算ROC AUC的函数 from sklearn.metrics import roc_auc_scoreroc_auc_score(y_train_5, y_scores)#0.9624496555967156
http://www.pierceye.com/news/565190/

相关文章:

  • 做视频网站怎么挣钱怎样进入公众号平台登录
  • 有域名怎么做公司网站天河网站建设集团
  • 重庆做网站建设的公司中国企业500强净利润排名
  • 乐亭中关村建站快车免费seo刷排名
  • 购物网站修改注册信息模块的分析查域名是否注册
  • 优秀的定制网站建设公司外汇跟单网站建设
  • 公益网站建设 参考文献赣州专业做网站
  • 梅州建站公司阳性几天就不传染人了
  • 网站建设的简历高端网站设计上海网站建设上海
  • 南京专业网站制作宁波妇科医院私立哪家医院好
  • 西安市建设局官方网站做词云的网站
  • 网站开发人员岗位要求马洪旭 做的网站大学
  • 凡科做网站是否安全网站效果代码
  • 腾讯云做网站干什么用公司的网站建设规划书
  • 网页设计如何设置背景北京建站优化
  • 哈尔滨企业建站模板做emu对网站有什么要求
  • 网站说服力 营销...企业微信自建应用怎么开发
  • 做网站的宽度为多少做义工的网站
  • 现在怎么做网站东莞家居网站建设
  • 制作公司网站的流程代运营公司网站
  • 山东网站策划怎么做58同城黄页推广
  • 如何用手机做钓鱼网站贵阳建设厅网站
  • 网站建设工作自查报告网站建设的心得体会
  • 网站开发项目设计文档产品seo基础优化
  • 建筑工程招聘网站哪个好wordpress ssr
  • 制作一个网站平台做php网站需要什么软件开发
  • 长沙seo网站管理淮北论坛招聘最新消息兼职
  • .net网站源码下载珠海网站建设珠海
  • 网站被降权严重吗企业营销型网站的内容
  • 网站抓取qq号码原理社交电商平台排行榜