小数据的处理

数据来源:第二届全国大学生大数据挑战赛

数据样例:

数据描述:2017大数据挑战赛

数据处理:

0.包含必要库:

import numpy as np
import pandas as pd
from sklearn.utils import shuffle
from xgboost import XGBClassifier
from imblearn.over_sampling import SMOTE
from sklearn.grid_search import GridSearchCV

DATA_DIR='D:/csdn/dsjtzs_txfz_training.txt'

1.读取数据:

def get_data(data_dir):
    with open(data_dir) as f:
        lines=[x.strip('\n') for x in f.readlines()]
    return lines

2.切分数据:

def cut_data(data,save_label=None):
    """
    save_label:保存路径
    """
    Id=[]
    postion=[]
    label=[]
    for line in data:
        Id.append(line[0])
        postion.append(line[1:-1].strip())
        label.append(line[-1])
    if save_label!=None:
        np.save(save_label,np.array(label))
    return Id,postion,label

3.按坐标分开:

def cast(data):
    """
    返回一个字典
    """
    X_pos=[]
    Y_pos=[]
    T_pos=[]
    X_end=[]
    Y_end=[]
    for i in list(data):
        i=i.replace(';',',').split(',')
        X_pos.append(i[:-2:3])
        Y_pos.append(i[1:-2:3])
        T_pos.append(i[2:-2:3])
        X_end.append(i[-2])
        Y_end.append(i[-1])
    return dict(X_pos=X_pos,Y_pos=Y_pos,T_pos=T_pos,X_end=X_end,Y_end=Y_end)

4.找呀找呀找特征

def find_features(data,key,save_dir=None):
    """
    data:dict(X_pos=X_pos,Y_pos=Y_pos,T_pos=T_pos,X_end=X_end,Y_end=Y_end)
    key:data中的键
    抽取样例特征
    """
    d=data[key]
    f1=[]
    f2=[]
    f3=[]
    """
    ...
    可扩展特征
    """
    for i in d:
        i=pd.Series(i).astype(float)
        f1.append(i.var())
        f2.append(i.std())
        f3.append(i.diff())
    
    features=np.array([f1,f2,f3]).T
    if save_dir!=None:
        np.save(save_dir,features)
    return features

5.连接特征:

def concatenate_fea(feature_tuple,save_dir=None):
    """
    连接特征
    """
    features=np.concatenate(feature_tuple,axis=1)
    if save_dir!=None:
        np.save(save_dir,features)
    return features

6.填nan,打乱:

def fill_shuff(data,label):
    data=np.nan_to_num(data)
    data,label=shuffle(data,label)
    return data,label

7.正负样本平衡:

def improve_data(data,label):
    sm=SMOTE(random_state=0)
    data,label=sm.fit_sample(data,label)
    return data,label

8.网格化调参:

def grid_train(data,label,params,estimator=XGBClassifier()):
    gs=GridSearchCV(estimator,params,cv=5,iid=False,n_jobs=5,scoring='roc_auc')
    gs.fit(data,label)
    print(gs.best_params_,gs.best_score_)


代码暂时就撸到这里了,特征的话一两百个我会写出来?不存在的再见

后面还有模型融合等方法(我的理解其实和神经网络差不多,都是提取出高阶特征),下回再说!!

(扶我起来,我还能再撸100行!)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
成绩分析软件简介 一、界面 对于存入在Excel文件中的数据如下图所示: 通过程序界面上的“ ”按钮读入后主界面如下: 二、功能 1、可统计年段、班级各科的最高分、最低分,计算平均分、统计优秀人数、优秀率、及格人数、及格率、统计满分人数、统计各分数段的人数。效果如下: 具体操作是点击主界面上的“ ”按钮,按提示操作即可。 2、可对成绩进行排名,效果如下: 具体操作是点击主界面上的“ ”按钮,按提示操作即可。 3、针对高中阶段的成绩进行分析 1)可计算各班单科大于或等于满分的90%、80%、70%、60%(以上参数可以调整,如将90%改为95%)的人数。如满分为150分,则是分别计算单科成绩在135、120、105、90分及以上的人数;统计各班在各区间段的平均分、最高分等。 2)统计各班所有科目的总分大于或等于530、500、480、460、440的人数(这些参数可以调整);统计各班位于年段前30、50、100、150、200名的人数(这些参数可以调整)。效果如下: 3)统计各班语文、数学、英语三科总分大于或等于350、330、310、280、250的人数;统计各班物理、化学、生物三科总分大于或等于230、210、190、170、150的人数;统计各班政治、历史、地理三科总分大于或等于230、210、190、170、150的人数(以上参数可以调整)。效果如下: 以上所有结果均保存为Excel文件中的表。 请注意:若用本程序打开了存放了成绩的Excel文件,则不能再用Excel软件打开此文件。举例:若用本软件打开了“试验数据.xls”,则不能再用Excel程序打开此文件。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值