zoukankan      html  css  js  c++  java
  • Python之数据处理-2

      一、数据处理其实是一个很麻烦的事情。

        在一个样本中存在特征数据(比如:人(身高、体重、出生年月、年龄、职业、收入...))当数据的特征太多或者特征权重小或者特征部分满足的时候。

        这个时候就要进行数据的处理(比如:预测性别,特征出生年月,的影响就会很低,这里就要减少这一特征的权重,或者删除。再比如:预测92年的人的职业,这个时候首先需要过滤特征,然后判断出生年月中的年就没有必要成为特征,但是可以新增特征月,删除原来的出生年月特征)

        还有就是我们在使用table数据时,一般数据都是分开(比如:用户、角色、权限等)。我们这个时候就需要把数据合并成一个群体样本。通过他们之间的联系,进行数据合并

      二、上面只是列举了几种数据的处理方式,实际的数据处理比想象的要复杂。当数据特征数据处理的很好的时候,我们会进行数据分割。一般分割为训练集、测试集。目的用来评估模型的准确度。

      三、例举几种数据处理方式:

        1)数据合并

        # 读取数据
        orders = pandas.read_csv("market/orders.csv")
        prior = pandas.read_csv("market/order_products__prior.csv")
        products = pandas.read_csv("market/products.csv")
        aisles = pandas.read_csv("market/aisles.csv")
        # 合并数据
        _msg = pandas.merge(orders, prior, on=["order_id", "order_id"])
        _msg = pandas.merge(_msg, products, on=["product_id", "product_id"])
        merge_data = pandas.merge(_msg, aisles, on=["aisle_id", "aisle_id"])
        # 交叉表(特殊分组)
        # (用户ID, 类别)
        cross = pandas.crosstab(merge_data["user_id"], merge_data["aisle"])

        2)过滤特征

        # 数据筛选
        train_data = train_data.query("x > 1.0 & x < 1.25 & y > 2.5 & y < 2.75")

        3)新增删除特征

        # 转换时间
        time_value = pandas.to_datetime(train_data["time"], unit="s")
        # 转换成字典
        time_value = pandas.DatetimeIndex(time_value)
        # print(time_value)
    
        # 构造特征
        data = train_data.copy()
        data["day"] = time_value.day
        data["hour"] = time_value.hour
        data["weekday"] = time_value.weekday
        # print(train_data.head(10))
    
        # 删除影响特征的数据,axis为1纵向删除
        data = data.drop(["time"], axis=1)
        
        # 转换时间
        time_value = pandas.to_datetime(train_data["time"], unit="s")
        # 转换成字典
        time_value = pandas.DatetimeIndex(time_value)
        # print(time_value)
    
        # 构造特征
        data = train_data.copy()
        data["day"] = time_value.day
        data["hour"] = time_value.hour
        data["weekday"] = time_value.weekday
        # print(train_data.head(10))
    
        # 删除影响特征的数据,axis为1纵向删除
        data = data.drop(["time"], axis=1)
    
        # 删除小于目标值的数据
        place_count = data.groupby("place_id").count()
        # print(place_count)
        # 过滤数量大于5的地点ID,并且加入列中
        tf = place_count[place_count.x > 5].reset_index()
        # print(tf)
        data = data[data["place_id"].isin(tf.place_id)]
    
        # 取特征值和目标值
        y = data["place_id"]
        x = data.drop(["place_id", "row_id"], axis=1)

      4)数据分割(sklearn.model_selection),很重要

       # 数据分割
        x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.25)

      x,y:训练集和目标值

      x_train, y_train:训练集

      x_test, y_test:测试集

      

  • 相关阅读:
    JavaScript window对象属性和方法
    bzoj1878 [SDOI2009]HH的项链
    bzoj3289 Mato的文件管理
    bzoj2038 [2009国家集训队]小Z的袜子(hose)
    bzoj2333 [SCOI2011]棘手的操作
    bzoj2809 [Apio2012]dispatching
    hdu1512 Monkey King
    免费航班
    bzoj4538 [Hnoi2016]网络
    bzoj3207 花神的嘲讽计划Ⅰ
  • 原文地址:https://www.cnblogs.com/ll409546297/p/11212717.html
Copyright © 2011-2022 走看看