pandas机器学习入门尝试

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

提示:这里可以添加本文要记录的大概内容:
机器学习就是通过已有数据的学习后,来推测未来的数据走向,趋势
利用历史数据,实现对未知的预测,是机器学习的核心目标


提示:以下是本篇文章正文内容,下面案例可供参考

一、实例目标

实例目标:实现泰坦尼克存活预测
处理步骤:
1、输入数据:使用Pandas读取历史数据,特点是已经知道了这个人最后有没有活下来
2、训练模型:使用Sklearn训练模型
3、使用模型:对于一个新的不知道存活的人,预估他的存活概率
数据来源:https://www.kaggle.com/c/titanic/data

二、使用步骤

1.引入库

代码如下(示例):


import pandas as pd
import numpy as np
#步骤1:读取训练数据
train_data=pd.read_csv(r"G:\360Downloads\myself\zuoye\titanic\train.csv")
train_data.head(5)
#survived=1代表这个人活下来了,其他的都是这个人的信息和当时的仓位、票务情况
#只挑选两列,作为预测需要的特征
feature_cols=["Pclass","Parch"]#Pclass:客舱等级Parch:在船父母数/子女数
X = train_data.loc[:,feature_cols]
X.head()
#单独提取是否存活的列,作为预测的目标
y = train_data.Survived
y.head()

#步骤2:训练模型
from sklearn.linear_model import LogisticRegression
#创建模型对象
logreg = LogisticRegression()
#实现模型训练
logreg.fit(X,y)

#步骤3:对于未知数据使用模型
#机器学习的核心目标,是使用模型未知的事物
#比如预测股票明天是涨还是跌、一套新的二手房成交价大概多少钱,用户打开APP最有可能看那些视频等问题
#找一个历史数据中不存在的数据
X.drop_duplicates().sort_values(by=["Pclass","Parch"])
#预测这个数据存活的概率
logreg.predict([[2,4]])
logreg.predict_proba([[2,4]])

在这里插入图片描述

三、Pandas怎么找出最影响结果的那些特征?

1.实例演示:泰坦尼克沉船中,最影响生死的因素有哪些?

应用场景:1.机器学习的特征选择,去除无用的特征,可以提升模型效果、降低训练时间等等
#数据分析领域,找出收入波动的最大因素


#怎么找到影响结果的最大因素
#Pandas怎么找出最影响结果的那些特征?
#应用场景:1.机器学习的特征选择,去除无用的特征,可以提升模型效果、降低训练时间等等
#数据分析领域,找出收入波动的最大因素

#实例演示:泰坦尼克沉船中,最影响生死的因素有哪些?

import pandas as pd
import numpy as np
from sklearn.feature_selection import SelectKBest
from sklearn.feature_selection import chi2

df=pd.read_csv(r"D:\搜狗高速下载\titanic\train.csv")
df.head()

#Pclass:船舱等级 SibSP:在船兄弟姐妹数/配偶数
#Parch:在船父母数/子女数 Ticket:船票编号
#Fare:船票价格Embarked:登船港口Cabin:客舱号

df=df[["PassengerId","Survived","Pclass","Sex","Age","SibSp","Parch","Fare","Embarked"]].copy()
df.head()

#1.数据清洗和转换  相关函数只能处理数值型
#是否有空列
df.info()
#给空值年龄填充平均值
df["Age"]=df["Age"].fillna(df["Age"].median())
#将性别变成数据
df.Sex.unique()
df.loc[df["Sex"]=="male","Sex"]=0
df.loc[df["Sex"]=="female","Sex"]=1
df.head()
#给Embarked填充空值,字符串转换成数字
df.Embarked.unique()
#填充空值
df["Embarked"]=df["Embarked"].fillna(0)
df.loc[df["Embarked"]=="S","Embarked"]=1
df.loc[df["Embarked"]=="C","Embarked"]=2
df.loc[df["Embarked"]=="Q","Embarked"]=3

#2.将特征列和结果列拆分开
y=df.pop("Survived")
X=df
X.head()
y.head()
X.info()


#3.用卡方检验选择topK的特征
#选择所有的特征,目的是看到特征重要性排序
bestfeatures=SelectKBest(score_func=chi2,k=len(X.columns))
fit=bestfeatures.fit(X,y)

#4.按照重要性顺序打印特征列表
df_scores=pd.DataFrame(fit.scores_)
df_scores
df_colums=pd.DataFrame(X.columns)
df_colums
#合并两个表
df_feature_scores=pd.concat([df_colums,df_scores],axis=1)
df_feature_scores.columns=["feature_name","Score"]
df_feature_scores.sort_values(by="Score",ascending=False)

在这里插入图片描述

四、get_dummies用于机器学习的特征处理

分类特征有两种
1.普通分类:性别、颜色
2.顺序分类:评分、级别(之间有顺序、大小关系
颜色这样的分类,直接用1,2,3,表达是不合适的,因为机器学习会误以为这些数字之间有大小关系
get_dummies就是用于衍射、性别这种特征的处理,也叫one-hot-encoding处理
比如男:01,女10
代码如下(示例):

from http.client import TOO_MANY_REQUESTS
import pandas as pd
import numpy as np


df=pd.read_csv(r"D:\搜狗高速下载\titanic\train.csv")
df.head()
df.drop(columns=["Name","Ticket","Cabin"],axis=1,inplace=True)
df
'''数值特征:Fare
分类-有序特征:Age
分类-普通特征:PassengerId、Pclass、Sex、SibSp、Parch、Embarked
Survived为要预测的Label
'''
#1.分类有序特征可以用数字的方法处理
df["Age"]=df["Age"].fillna(df["Age"].median())

#使用one-hot编码
pd.get_dummies(df["Sex"]).head()

#便捷方法
needcode_col=["Pclass","Sex","SibSp","Parch","Embarked"]
df_c=pd.get_dummies(
    df,
    #要转码的列
    columns=needcode_col,
    #生成的列名的前缀
    prefix=needcode_col,
    #把空值也做成编码
    dummy_na=True,
    drop_first=True
)
df_c.head()

y = df_c.pop("Survived")
y.head()
X = df_c
X.head()

from sklearn.linear_model import LogisticRegression
# 创建模型对象
logreg = LogisticRegression(solver='liblinear')
# 实现模型训练
logreg.fit(X, y)

logreg.score(X, y)	# 0.8148148148148148


总结

还是不太明白机器学习的相关函数以及其中原理

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值