好特征可以从几个角度衡量:覆盖度,区分度,相关性,稳定性
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
文章浏览阅读5.9k次。本文重点讲术springboot +vue前后端分离nginx如何配置两个代理一、通常SpringBoot与vue 进行前后端分离,主要有两种方式:1.打包(npm run build命令)vue项目出来的dist文件夹拷贝到springboot项目的static文件目录,部署到tomcat即可。2.利用nginx的反向代理。本文主要讲解第二种首先打包前端项目到指定目录:E:\fjgh\..._nginx怎么转发两个dist文件
文章浏览阅读656次,点赞5次,收藏5次。Git 核心知识
文章浏览阅读1.1k次,点赞15次,收藏6次。HTML静态网页成品作业(HTML+CSS)——动漫猫和老鼠网页(1个页面)
文章浏览阅读294次。1.Lua脚本,基础语法,去库存脚本编写;2.SpringBoot整合Lua脚本,配置类RedisScript_redission实现抢单
【代码】C++Day 7 作业。
目前MoonBit已新增对JavaScript的支持并带来前所未有的性能提升,在JS后端实现了超出Json5近8倍性能的优势。。但回调函数的参数和返回值类型目前只能是简单类型,如Int等。修改显式实现 trait(extension method)的语法,允许显式写出要给哪个类型实现 trait和之前的语法相比,新的语法允许显式写出实现 trait 的类型,签名信息更丰富、更清晰。支持Bytes字面量Bytes字面量b"..."
前端发版缓存问题
DottedDict 是一个 Python 库,它允许用户通过点号访问嵌套字典中的值,类似于 JavaScript 中的对象访问方法
前端发版缓存问题
相比之下,市值较低的平台币,如BMX、BGB和MX,具有更大的增长潜力,呈现出更多的增长机会。在过去的一年里,受益于美国股市上比特币 ETF 的上市和比特币供应量的第四次减半,比特币的价格一度飙升至73,000美元以上,达到历史新高。本文旨在为读者提供对这七种选定平台币的全面分析,评估它们的价值和潜力,并研究价格和市值增长指标、回购机制、功能权益以及其发行方的市场表现。随着越来越多的开发者和项目选择在这些区块链上构建应用程序,这些区块链的持续发展有助于提升其原生代币的可用性和需求,从而扩展其使用场景。
相信大家都玩过贪吃蛇这款游戏吧,贪吃蛇是久负盛名的游戏,它也和俄罗斯方块,扫雷等游戏位列经典游戏的行列,那贪吃蛇到底是怎么实现的呢?今天,我就用C语言带着大家一起来实现一下这款游戏,从设计到代码的实现可以帮助我们提升编程能力和逻辑能力
在web3以太坊开发中,往往大家交流的时候,会涉及到一些合约相关的词汇,这里重点说两个合约,一个是manager合约,另一个是registry合约。