zoukankan      html  css  js  c++  java
  • Logistic回归

    参考 :https://www.cnblogs.com/jin-liang/p/9534801.html?ivk_sa=1023345p
    Logistic回归是一种机器学习分类算法,用于预测分类因变量的概率。 在逻辑回归中,因变量是一个二进制变量,包含编码为1(是,成功等)或0(不,失败等)的数据。 换句话说,逻辑回归模型预测P(Y = 1)是X的函数。

    收集数据,探索数据

    data.info()

    数据清洗,空,异常,重复

    把因变量变成 数值类型便于统计

    data.loc[data['y']=='yes','y']=1
    data.loc[data['y']=='no','y']=0
    data['y'].value_counts()
    深入理解两个类别下数据的差异
    data.groupby('y').mean()

    可视化分析
    pd.crosstab(data.job,data.y).plot(kind='bar')   #交叉表
    plt.title('Purchase Frequency for Job Title')
    plt.xlabel('Job')
    plt.ylabel('Frequency of Purchase')
    查看年龄分布、
    data.age.hist()
    plt.title('Histogram of Age')
    plt.xlabel('Age')
    plt.ylabel('Frequency')

    这是只有两个值的变量,0和1。

    回顾我们数据集的信息,有11个object,其中y已经转化过来,另外有10个类别需要转化

    cat_vars=['job','marital','education','default','housing','loan','contact','month','day_of_week','poutcome']
    for var in cat_vars:
        cat_list='var'+'_'+var
        cat_list = pd.get_dummies(data[var], prefix=var)
        data1=data.join(cat_list)
        data=data1
        
    
    data_vars=data.columns.values.tolist()
    to_keep=[i for i in data_vars if i not in cat_vars]
    
    
    data_final=data[to_keep]
    data_final.columns.values

    分离特征与模板变量
    data_final_vars=data_final.columns.values.tolist()
    y=['y']
    X=[i for i in data_final_vars if i not in y]

    特征选择 (RFE 递归特征消除)
    from sklearn import datasets
    from sklearn.feature_selection import RFE
    from sklearn.linear_model import LogisticRegression
    logreg = LogisticRegression()
    rfe = RFE(logreg, 18)
    rfe = rfe.fit(data_final[X], data_final[y] )
    print(rfe.support_)
    print(rfe.ranking_)
    根据布尔值筛选我们想要的特征(参考):

    from itertools import compress
    
    cols=list(compress(X,rfe.support_))
    cols

    执行模型
    import statsmodels.api as sm
    
    X=data_final[cols]
    y=data_final['y']
    
    
    logit_model=sm.Logit(y,X)
    logit_model.raise_on_perfect_prediction = False
    result=logit_model.fit()
    print(result.summary().as_text)

    拟合模型

    rom sklearn.linear_model import LogisticRegression
    from sklearn import metrics
    
    X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=0)
    logreg = LogisticRegression()
    logreg.fit(X_train, y_train)
    y_pred = logreg.predict(X_test)
    y_pred = logreg.predict(X_test)
    print('Accuracy of logistic regression classifier on test set: {:.2f}'.format(logreg.score(X_test, y_test))) 


  • 相关阅读:
    三十岁前不要去在乎的29件事
    大型网站架构演变和知识体系
    性情中人。。。
    blog搬新家了。。。把以前的文章也都搬过来了。看看以前的文章,想起了很多。。。
    2006620 11:42:00 王子劳尔,王者归来
    2006620 11:40:00 这一刻,便是我们的永远给最爱的安德烈.舍普琴科
    第一份工作一定要选一家好公司 摘在 唐骏 《我的成功可以复制》
    2006811 11:29:00 搜索算法及其在ACM竞赛中的应用(作者/刘力科 计算机系01级4班)
    内核学习驱动隐藏进程
    2005129 17:58:00 新年快乐
  • 原文地址:https://www.cnblogs.com/dll102/p/13031524.html
Copyright © 2011-2022 走看看