zoukankan      html  css  js  c++  java
  • 机器学习笔记2:线性回归、逻辑回归

    机器学习本周讲的是线性回归、逻辑回归
    原理见上一篇博客:https://www.cnblogs.com/bugutian/p/11123484.html
    课程资料:https://github.com/GreedyAIAcademy/Machine-Learning

    线性回归

    其他的前面都学了,新的知识

    1. 可以使用tushare爬取股票代码

    import tushare as ts
    df = ts.get_hist_data('000001')
    print(df)
    df.to_csv('000001.csv')
    

    2. 零散的小知识

    plotly.graph_objs : 可画股票的K线图
    np.shape(df) 矩阵又多少行多少列如(611,14)
    reshape() 将多维数组编程一维数组
    df['label'] = df['close'].shift(-num) 用shift将结果上移num条记录

    逻辑回归

    逻辑回归的操作步骤

    • 步骤1:分析数据
    • 步骤2:数据预处理
    • 步骤3:训练模型进行预测

    分析数据

    分析数据的字段,确定那些因素是良好的预测因素

    数据预处理

    1. 缺失数据处理
    • 删除: 缺失数据少时删除行,缺失数据多时删除列
    • 取平均值: 用平均值代替缺失值
    • 取中位数: 用中位数代替缺失值
      到底选用中替代方法,不能排脑袋决定,选哪种方法,主要看哪种可能和结果关联度大
    1. 过采样
      如果数据不平衡,如y=0的数据量是y=1数据量的10倍,此时需要用到过采样,过采样的结果使二元结果的数据量为1:1.

    训练模型进行预测

    都一样。

    logreg = LogisticRegression()
    logreg.fit(os_data_X, os_data_y.values.reshape(-1))
    y_pred = logreg.predict(X_test)
    logreg.score(X_test, y_test)
    

    作业题

    地址:https://github.com/GreedyAIAcademy/Machine-Learning/tree/master/3.LinearRegression.LogisticRegression/homework

    1. 处理其他数据的方法

    由于其他数据只是缺失1两条信息,因此将这些数据删除

    data = data.dropna()
    data.isnull().sum()
    

    2. 过采样处理

    from imblearn.over_sampling import SMOTE
    os = SMOTE(random_state=0)
    columns = X_train.columns
    os_data_X,os_data_y=os.fit_sample(X_train, y_train)
    os_data_X = pd.DataFrame(data=os_data_X,columns=columns )
    os_data_y= pd.DataFrame(data=os_data_y,columns=['survived'])
    # we can Check the numbers of our data
    print("过采样以后的数据量: ",len(os_data_X))
    print("未生还数: ",len(os_data_y[os_data_y['survived']==0]))
    print("生还数: ",len(os_data_y[os_data_y['survived']==1]))
    print("未生还的百分比: ",len(os_data_y[os_data_y['survived']==0])/len(os_data_X))
    print("生还的百分比: ",len(os_data_y[os_data_y['survived']==1])/len(os_data_X))
    ```python
    ### 3. 训练和预测
    ```python
    from sklearn.linear_model import LogisticRegression
    from sklearn import metrics
    logreg = LogisticRegression()
    logreg.fit(os_data_X, os_data_y.values.reshape(-1))
    y_pred = logreg.predict(X_test)
    print("准确率为 %2.3f" % accuracy_score(y_test, y_pred))
    

    准确率为 0.794

    4. 不过采样结果

    logreg2 = LogisticRegression()
    logreg2.fit(X_train, y_train)
    y_pred2 = logreg2.predict(X_test)
    print("准确率为 %2.3f" % accuracy_score(y_test, y_pred2))
    

    准确率为 0.817
    可见过采样之后的准确率不一定高。

  • 相关阅读:
    Openrasp源码分析
    feifeicms后台任意文件读取
    python之迭代器和生成器
    java之导入excel
    jquery单击事件的写法
    java之高效操作文件
    多条件搜索优化sql
    java之代码复用
    java之接口文档规范
    eclipse之常用快捷键
  • 原文地址:https://www.cnblogs.com/bugutian/p/11153212.html
Copyright © 2011-2022 走看看