好特征可以从几个角度衡量:覆盖度,区分度,相关性,稳定性
import pandas as pd
df = pd.DataFrame({'A':[5,91,3],'B':[90,15,66],'C':[93,27,3]})
df.corr() # 皮尔逊
df.corr('spearman')#斯皮尔曼
df.corr('kendall')#肯德尔
import pandas as pd
import toad data = pd.read_csv('data/germancredit.csv')
data.replace({'good':0,'bad':1},inplace=True)
data.shape
#缺失率大于0.5,IV值小于0.05,相关性大于0.7来进行特征筛选
selected_data, drop_list= toad.selection.select(data,target = 'creditability', empty = 0.5, iv = 0.05, corr = 0.7, return_drop=True)
print('保留特征:',selected_data.shape[1],'缺失删除:',len(drop_list['empty']),'低iv删 除:',len(drop_list['iv']),'高相关删除:',len(drop_list['corr']))
pip install Boruta
import numpy as np
import pandas as pd
import joblib
from sklearn.ensemble import RandomForestClassifier
from boruta import BorutaPy
#加载数据
pd_data = joblib.load('data/train_woe.pkl') pd_data
#处理数据,去掉id 和 目标值
pd_x = pd_data.drop(['SK_ID_CURR', 'TARGET'], axis=1)
x = pd_x.values # 特征
y = pd_data[['TARGET']].values # 目标
y = y.ravel() # 将多维数组降位一维
# 先定义一个随机森林分类器
rf = RandomForestClassifier(n_jobs=-1, class_weight='balanced', max_depth=5)
'''
BorutaPy function
estimator : 所使用的分类器
n_estimators : 分类器数量, 默认值 = 1000
max_iter : 最大迭代次数, 默认值 = 100
'''
feat_selector = BorutaPy(rf, n_estimators='auto', random_state=1, max_iter=10)
feat_selector.fit(x, y)
dic_ft_select = dict()
# feat_selector.support_ # 返回特征是否有用,false可以去掉
for ft, seleted in zip(pd_x.columns.to_list(), feat_selector.support_):
dic_ft_select[ft] = seleted
pd_ft_select = pd.DataFrame({'feature':pd_x.columns.to_list(), "selected": feat_selector.support_})
pd_ft_selec
import numpy as np
import pandas as pd
import joblib
from statsmodels.stats.outliers_influence import variance_inflation_factor
pd_data = joblib.load('./train_woe.pkl') #去掉ID和目标值
pd_x = pd_data.drop(['SK_ID_CURR', 'TARGET'], axis=1)
#定义计算函数
def checkVIF_new(df):
lst_col = df.columns
x = np.matrix(df)
VIF_list = [variance_inflation_factor(x,i) for i in range(x.shape[1])]
VIF = pd.DataFrame({'feature':lst_col,"VIF":VIF_list})
max_VIF = max(VIF_list) print(max_VIF)
return VIF
df_vif = checkVIF_new(pd_x)
df_vif
df_vif[df_vif['VIF'] > 3]
sklearn.feature_selection.RFE
import numpy as np
import pandas as pd
import joblib from sklearn.feature_selection
import RFE from sklearn.svm
import SVR pd_data = joblib.load('data/final_data.pkl')
pd_data
pd_x = pd_data.drop(['SK_ID_CURR', 'TARGET'], axis=1)
x = pd_x.values
y = pd_data[['TARGET']].values
y = y.ravel()
#定义分类器
estimator = SVR(kernel="linear")
selector = RFE(estimator, 3, step=1) # step 一次去掉几个特征
selector = selector.fit(x, y)
#展示选择参数
dic_ft_select = dict()
for ft, seleted in zip(pd_x.columns.to_list(), selector.support_):
dic_ft_select[ft] = seleted
pd_ft_select = pd.DataFrame({'feature':pd_x.columns.to_list(), "selected": selector.support_})
pd_ft_select
from sklearn.svm import LinearSVC
from sklearn.datasets import load_iris
from sklearn.feature_selection import SelectFromModel
iris = load_iris() X, y = iris.data, iris.target
X.shape
lsvc = LinearSVC(C=0.01, penalty="l1", dual=False).fit(X, y)
model = SelectFromModel(lsvc, prefit=True)
X_new = model.transform(X)
X_new.shape
文章浏览阅读1.9w次,点赞21次,收藏180次。51单片机AD转换电路设计实现关于AD转换的原理,大家在《数字电子技术》中已经学过,这里做过多的介绍,本文介绍一款经典的8位AD转换芯片ADC0804,基于51单片机设计AD转换电路,并完成测量值的转换。1 芯片引脚介绍CS:片选信号,低电平有效,即CS=0时候芯片才能正常工作,单独一个ADC0804芯片时候直接置零。当有多个芯片时候可以通过片选信号实现分时复用。WR:低电平有效,当WR信号由高到低时候实现一次ADC转换。RD:低电平有效,RD=0时候可以读取数据。Vin+:模拟电压输入端。_单片机ad转换原理
文章浏览阅读1.7k次,点赞3次,收藏14次。操作系统实验报告17实验内容实验内容:虚拟存储管理。编写一个 C 程序模拟实现课件 Lecture24 中的请求页面置换算法包括FIFO、LRU (stack and matrix implementation)、Second chance,并设计输入用例验证结果。实验环境架构:Intel x86_64 (虚拟机)操作系统:Ubuntu 20.04汇编器:gas (GNU Assembler) in AT&T mode编译器:gcc技术日志实验内容原理页_页式存储管理及页面置换算法操作系统实验报告
文章浏览阅读1.7w次,点赞2次,收藏13次。<v:shapetypeid="_x0000_t75" coordsize="21600,21600" o:spt="75" o:preferrelative="t"path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f"><v:shape id="_x0000_i102
文章浏览阅读532次。{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],"search_count":[{"count_phone":4,"count":4}]},"card":[{"des":"阿里技术人对外发布原创技术内容的最大平台;社区覆盖了云计算、大数据、人工智能、IoT、云原生、数据库、微服务、安全、开发与运维9大技术领域。","link1":..._python 执行cmd命令 的输出
文章浏览阅读456次。【README】消息中心的消息追踪需要使用 Trace 实现,Trace是 rabbitmq用于记录每一次发送的消息;方便开发者调试,排错。可通过插件形式提供可视化界面。【1】 开启消息追踪1)消息追踪通过 rabbitmq的插件 trace 来实现, 插件需要启用和打开;2)trace 启动后会自动创建系统 Exchange, amq. rabbitmq.trace, 每个队列会自动该绑定该exchange,绑定后发送到队列的消息都会发送到 trace 日志;3)插件命令序号 _rabbitmq rabbitmq_tracing
文章浏览阅读2k次,点赞3次,收藏25次。1. 导入所需的库import tensorflow as tfimport numpy as npimport matplotlib.pyplot as pltfor i in [tf, np]: print(i.__name__,": ",i.__version__,sep="")输出:tensorflow: 2.2.0numpy: 1.17.42. 导入Fashion_MNIST数据集fashion_mnist = tf.keras.datasets.fas_difussion model mnist
文章浏览阅读37次。4.强大的解码能力:DPO2002B示波器提供了多种解码选件,支持常见的串行协议和总线通信解码,如I2C、SPI、UART等,方便工程师对通信数据进行分析和验证。3.灵活的触发功能:示波器支持多种触发方式,如边沿触发、脉冲宽度触发和序列触发等,根据需要灵活设置触发条件,捕获感兴趣的波形。1.高性能参数:该示波器具备200 MHz的带宽和1 GS/s的实时采样率,可捕获和显示高频信号的细节,确保准确的测量结果。
文章浏览阅读832次,点赞21次,收藏18次。本系统带文档lw万字以上文末可领取本课题的JAVA源码参考。
文章浏览阅读876次,点赞17次,收藏20次。华为云AppCube:体验快速搭建微信问卷小程序_微信问卷小程序
文章浏览阅读2.2k次。 我是2001年开始接触PowerBuilder的,一门辅修课上,任课老师向我推荐了它,从此,我对它可谓“一见钟情”。 从刚开始接触PB,我就觉得它是数据库方面最优秀的开发工具之一。无论是它面向对象的特性,还是它特有的PowerScript语言和“数据窗口”,都让我感到无比心动。 我的感受 回想起最初学习PB的时候,给我留下印象最深的是,我发现自己常常会不由自_powerbuilder支持多线程吗
文章浏览阅读784次。Ubuntu第一次通过U盘安装时未出现是否连接网络的选项,安装完成后无线网络无法连接(找不到适配器,更新源后也不好用),蓝牙无法打卡,不知道是什么原因,于是再重装一遍。先关闭secure boot(在security选项中) 和fast boot(boot选项)第一次安装时忘记关联,不知道是不是导致问题的原因卸载参照:在win10、Ubuntu双系统下,卸载Ubuntu提醒下自己:在Windows下删除之前分给Ubuntu中的分区(包括efi分区,但不要删Windows的efi,这里我删除了/,efi_华硕电脑安装ubuntu18.04
文章浏览阅读1k次,点赞27次,收藏16次。kaldi是一个开源的语音识别工具箱,是基于c++、perl、shell编写的,可以在windows和unix 平台上编译。教程网页:http://www.kaldi-asr.org/doc/ 里面可以查阅语音/说话人识别实现过程、kaldi的数据结构、命令的使用说明等。还有网上的dan的ppt。kaldi下载:https://_利用 kaldi 进行语音识别