ML、DL、CNN学习记录1

ML、DL学习记录1

ML 、sklearn

# coding: utf-8
# Date:2020/8/12 19:22
# @Author: hcf
# @Name: toy
import os

import numpy as np
import pandas as pd
import sklearn
# scikit-learn 包

# 准确度分数
from sklearn.metrics import accuracy_score
# 对标签 进行 编码 的预处理操作
from  sklearn.preprocessing import LabelEncoder

# 划分训练集和测试集
from sklearn.model_selection import train_test_split
# 交叉验证, 找较好的超参数
from sklearn.model_selection import GridSearchCV
# Node:有的版本把 joblab 删掉了,可能需要自己使用pip install joblib进行安装
from sklearn.externals import joblib
# 随机森林
from sklearn.ensemble import RandomForestClassifier


### 逻辑回归、朴素贝叶斯、SVM
from sklearn.linear_model import LogisticRegression
from sklearn.naive_bayes import BernoulliNB,MultinomialNB
from sklearn.svm import SVC
## 经典的数据集合
# ML : Iris
# uci:数据集
# DL : MNIST , IMDB
# GNN: Cora


# ML: scikit-learn
def forset0():
    data = pd.read_csv('iris.data',header=None)
    # print(data)
    x = data[np.arange(4)]
    y = data[4]
    print(x)
    # 编码器   将字符串转换为 数字 for example: 好、还好、不好 == 0 1 2
    le = LabelEncoder()
    # fit 转换操作 对因子编码
    le.fit(y)
    # 转换
    result = le.transform(y)
    print(y)
    print(result)
    coding = [0,1,2,2,1,0]
    # 逆转
    inv_coding = le.inverse_transform(coding)
    print(inv_coding)

    # 随机森林
    # 决策树的数目、分割标准(:gini、entropy)、决策树最大深度、分割节点最小的样本数目(最小为2,默认也为2)
    # 叶子节点最少要多少样本
    model = RandomForestClassifier(n_estimators=20,criterion='gini',max_depth=5,min_samples_split=5,
                           min_samples_leaf=3)
    model.fit(x,result)

def forset1():
    # 数据读取
    data = pd.read_csv('iris.data',header=None)
    # print(data)
    x = data[np.arange(4)]

    x = x[[2,3]]
    y = LabelEncoder().fit_transform(data[4])
    # 随机森林
    # 决策树的数目、分割标准(:gini、entropy)、决策树最大深度、分割节点最小的样本数目(最小为2,默认也为2)
    # 叶子节点最少要多少样本、随机的种子
    x_train,x_test,y_train,y_test = train_test_split(x,y)
    model = RandomForestClassifier(n_estimators=20, criterion='gini', max_depth=5, min_samples_split=5, min_samples_leaf=3,random_state=2020)
    model.fit(x_train,y_train)
    y_pred = model.predict(x)
    # print('real :', y)
    # print('model predit : ',y_pred)
    result = y == y_pred
    print(result)
    # True 的数目、False的数目
    print(pd.value_counts(result))
    # 正确率
    print(np.mean(result))
    # 特征(属性)重要度, 有的时候将不重要的属性去掉  可能提高准确度
    fea_importance = model.feature_importances_
    print(fea_importance)
    # 分类概率 [样本数,类数目]
    print(model.predict_proba(x))
    # 大多数模型的输出是概率,但是KNN,SVM之类的输出不是概率
    # 存在随机性质: 模型、数据
    #

# 数据划分 :train 和 test
# 准确率
def forset2():
    data = pd.read_csv('iris.data',header=None)
    # print(data)
    x = data[np.arange(4)]

    x = x[[2,3]]
    y = LabelEncoder().fit_transform(data[4])
    # 划分训练集、测试集
    x_train,x_test,y_train,y_test = train_test_split(x, y, test_size=0.3)
    # 随机森林
    # 决策树的数目、分割标准(:gini、entropy)、决策树最大深度、分割节点最小的样本数目(最小为2,默认也为2)
    # 叶子节点最少要多少样本、随机的种子
    model = RandomForestClassifier(n_estimators=20, criterion='gini', max_depth=5, min_samples_split=5, min_samples_leaf=3,random_state=2020)
    model.fit(x_train, y_train)

    y_train_pred = model.predict(x_train)
    y_test_pred = model.predict(x_test)
    # 准确度
    print('Train : ', accuracy_score(y_train,y_train_pred))
    print('Test  : ', accuracy_score(y_test, y_test_pred))

# 数据划分 :train 和 test
# 交叉验证
# 保存模型
def forset3():
    data = pd.read_csv('iris.data',header=None)
    # print(data)
    x = data[np.arange(4)]
    # 经过之前步骤   查看属性重要度后发现第2、3属性两个重要一些   所以单独提出来训练模型
    x = x[[2,3]]
    # 用于编码
    y = LabelEncoder().fit_transform(data[4])
    # 划分训练集、测试集 30%的分为测试集合( train:test  == 7:3)
    x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.3)
    if os.path.exists('rf.model'):
        print('模型加载...')
        model = joblib.load('rf.model')
    else:
        print('模型Train...')
        # 随机森林
        # 决策树的数目、分割标准(:gini、entropy)、决策树最大深度、分割节点最小的样本数目(最小为2,默认也为2)
        # 叶子节点最少要多少样本、随机的种子
        rf = RandomForestClassifier(n_estimators=20, criterion='gini', max_depth=5, min_samples_split=5, min_samples_leaf=3,random_state=2020)
        # rf : 模型
        # cv : 3折交叉验证
        model = GridSearchCV(rf, cv=3,
                     param_grid={'max_depth':np.arange(3,7),
                                 'min_samples_split': np.arange(2,9,2),
                                 'min_samples_leaf':np.arange(1,5)})
        model.fit(x_train, y_train)
    print("最优参数:",model.best_params_)
    print("最优模型:", model.best_estimator_)
    print("最优分数:", model.best_score_)
    y_train_pred = model.predict(x_train)
    y_test_pred = model.predict(x_test)
    # 准确度
    print('Train : ', accuracy_score(y_train,y_train_pred))
    print('Test  : ', accuracy_score(y_test, y_test_pred))
    # 保存模型
    joblib.dump(model, 'rf.model')

# 数据划分 :train 和 test
# 交叉验证
# 保存模型
def forset3():
    data = pd.read_csv('iris.data',header=None)
    # print(data)
    x = data[np.arange(4)]

    x = x[[2,3]]
    y = LabelEncoder().fit_transform(data[4])
    # 划分训练集、测试集
    x_train,x_test,y_train,y_test = train_test_split(x, y, test_size=0.3)
    if os.path.exists('rf.model'):
        print('模型加载...')
        model = joblib.load('rf.model')
    else:
        print('模型Train...')
        # 随机森林
        # 决策树的数目、分割标准(:gini、entropy)、决策树最大深度、分割节点最小的样本数目(最小为2,默认也为2)
        # 叶子节点最少要多少样本、随机的种子
        # 当想要使用其他的模型的时候, 只需要换掉下面这一句(就是说:所有的sklearn的模型的操作都是一样的流程)
        rf = RandomForestClassifier(n_estimators=20, criterion='gini', max_depth=5, min_samples_split=5, min_samples_leaf=3,random_state=2020)
        # rf : 模型
        # cv : 3折交叉验证
        model = GridSearchCV(rf, cv=3,
                     param_grid={'max_depth':np.arange(3,7),
                                 'min_samples_split': np.arange(2,9,2),
                                 'min_samples_leaf':np.arange(1,5)})
        model.fit(x_train, y_train)
    print("最优参数:",model.best_params_)
    print("最优模型:", model.best_estimator_)
    print("最优模型:", model.best_score_)
    y_train_pred = model.predict(x_train)
    y_test_pred = model.predict(x_test)
    # 准确度
    print('Train : ', accuracy_score(y_train,y_train_pred))
    print('Test  : ', accuracy_score(y_test, y_test_pred))
    # 保存模型
    joblib.dump(model, 'rf.model')


if __name__ == '__main__':
    forset3()

Tensorflow2.2.0安装问题

在这里插入图片描述

原因是:tensorflow的底层是c++,系统缺少了microsotf vc++组件,百度下载“微软常用运行库合集”并安装,就不会报错了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值