- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在改编一些在线代码来创建我自己的 scikit-learn One Hot Encoder 版本。自定义类为我做了一些事情,主要是它允许设置一个阈值,低于该阈值,分类变量的罕见级别将被转储到“其他”类中。我可以正确适应,但当我尝试转换时,出现转换错误,就好像在 OHE 之前运行的嵌入式 LabelEncoder 无法正常工作一样。
from sklearn.preprocessing import LabelEncoder, OneHotEncoder
from sklearn.base import BaseEstimator, TransformerMixin
from sklearn.utils.validation import check_is_fitted
import pandas as pd
import numpy as np
#my custom OHE-er
class CustomPandasTransformer(BaseEstimator, TransformerMixin):
def _validate_input(self, X):
if not isinstance(X, pd.DataFrame):
raise TypeError('X must be a DataFrame, but gor type=%s' % type(x))
return X
@staticmethod
def _validate_columns(X, cols):
scols = set(X.columns)
if not all(c in scols for c in cols):
raise ValueError("all columns must be present in X")
class DummyEncoder(CustomPandasTransformer):
def __init__(self, columns, sep='_', drop_one_level=True, tmp_nan_rep='MISSING',other_treshold=20):
self.columns=columns
self.sep = sep
self.drop_one_level = drop_one_level
self.tmp_nan_rep = tmp_nan_rep
self.other_treshold = other_treshold
def fit(self, X, y=None):
X = self._validate_input(X).copy()
tmp_nan = self.tmp_nan_rep
oth_thr = self.other_treshold
cols = self.columns
self._validate_columns(X, cols)
lab_encoders = {}
for col in cols:
#group low freq levels into a 'OTHER' level
tmp_vc = X[col].value_counts()
high_volume_levels = list(tmp_vc[tmp_vc>oth_thr].index)
vec = [v if v in high_volume_levels else 'OTHER' for v in X[col].tolist()]
vec = [tmp_nan if pd.isnull(v) else v for v in vec]
svec = list(set(vec))
if tmp_nan not in svec:
svec.append(tmp_nan)
le = LabelEncoder()
lab_encoders[col] = le.fit(svec)
X[col] = le.transform(vec)
ohe_set = X[cols]
ohe_nan_row = {c: lab_encoders[c].transform([tmp_nan])[0] for c in cols}
ohe_set = ohe_set.append(ohe_nan_row, ignore_index=True)
ohe = OneHotEncoder(sparse=False).fit(ohe_set)
self.ohe_ = ohe
self.le_ = lab_encoders
self.cols_ = cols
return self
def transform(self, X):
check_is_fitted(self, 'ohe_')
X = self._validate_input(X).copy()
ohe = self.ohe_
lenc = self.le_
cols = self.cols_
tmp_nan = self.tmp_nan_rep
sep = self.sep
drop = self.drop_one_level
self._validate_columns(X, cols)
col_order = []
drops = []
for col in cols:
le = lenc[col]
vec = [v if v in list(le.classes_) else 'OTHER' for v in X[col].tolist()]
vec = [tmp_nan if pd.isnull(v) else v for v in vec]
vec_trans = le.transform(vec)
X[col] = vec_trans
le_clz = le.classes_.tolist()
classes = ['%s%s%s' % (col,sep,clz) for clz in le_clz]
col_order.extend(classes)
if drop and len(le_clz)>1:
drops.append(classes[-1])
ohe_trans = pd.DataFrame.from_records(data=ohe.transform(X[cols]),
columns = col_order)
ohe_trans.index=X.index
if drops:
ohe_trans = ohe_trans.drop(drops, axis=1)
X = X.drop(cols, axis=1)
X = pd.concat([X, ohe_trans], axis=1)
return X
#the data
dicpd = {
u'BILL_CLASS': {0: np.nan, 1: np.nan},
u'CL_SUB_TYPE': {0: 'M', 1: 'M'},
u'COB_TYPE': {0: np.nan, 1: np.nan},
u'DUP_BILL_CLASS': {0: np.nan, 1: np.nan},
u'DUP_CL_SUB_TYPE': {0: 'M', 1: 'M'},
u'DUP_COB_TYPE': {0: np.nan, 1: np.nan},
u'DUP_DX_CD': {0: 'M9901', 1: 'Z0100'},
u'DUP_FAC_TYPE': {0: np.nan, 1: np.nan},
u'DUP_FREQUENCY': {0: np.nan, 1: np.nan},
u'DUP_LOB_ID': {0: 'PBC1', 1: 'PBC1'},
u'DUP_MOD1': {0: np.nan, 1: np.nan},
u'DUP_MOD2': {0: np.nan, 1: np.nan},
u'DUP_MOD3': {0: np.nan, 1: np.nan},
u'DUP_MOD4': {0: np.nan, 1: np.nan},
u'DUP_POS_CD': {0: '11', 1: '11'},
u'DUP_PROC_CD': {0: '98941', 1: 'V2020'},
u'DUP_REV_CD': {0: np.nan, 1: np.nan},
u'DX_CD': {0: 'M9901', 1: 'Z0100'},
u'FAC_TYPE': {0: np.nan, 1: np.nan},
u'FREQUENCY': {0: np.nan, 1: np.nan},
u'MBR_AGE': {0: 48, 1: 56},
u'MOD1': {0: '59', 1: np.nan},
u'MOD2': {0: np.nan, 1: np.nan},
u'MOD3': {0: np.nan, 1: np.nan},
u'MOD4': {0: np.nan, 1: np.nan},
u'POS_CD': {0: '11', 1: '11'},
u'PROC_CD': {0: '97140', 1: 'V2781'},
u'REV_CD': {0: np.nan, 1: np.nan},
u'RULE_1': {0: 0, 1: 0},
u'RULE_3': {0: 1, 1: 1},
u'RULE_4': {0: 1, 1: 1},
u'RULE_5': {0: 0, 1: 0},
u'RULE_6': {0: 1, 1: 1},
'SAME_DX': {0: 1, 1: 1},
'SAME_POS_CD': {0: 1, 1: 1},
'SAME_PROC': {0: 0, 1: 0},
'SAME_PROV': {0: 1, 1: 1},
'SAME_REV': {0: 0, 1: 0},
'SAME_TOT': {0: 3, 1: 3},
u'SYSTEM_GEN_DRG': {0: np.nan, 1: np.nan}}
#read into pandas
df1 = pd.DataFrame(dicpd)
#get object types
categorical_features = list(df1.select_dtypes(include=['object']).columns)
de = DummyEncoder(columns = categorical_features,other_treshold=10,drop_one_level=False)
de.fit(df1)
de.transform(df1)
ValueErrorTraceback (most recent call last)
<ipython-input-5-3a72a3fa8104> in <module>()
161 de.fit(df1)
162
--> 163 de.transform(df1)
<ipython-input-5-3a72a3fa8104> in transform(self, X)
95 drops.append(classes[-1])
96
---> 97 ohe_trans = pd.DataFrame.from_records(data=ohe.transform(X[cols]),
98 columns = col_order)
99
/data/dataiku-dss-4.2.3/python.packages/sklearn/preprocessing/data.pyc in transform(self, X)
2073 """
2074 return _transform_selected(X, self._transform,
-> 2075 self.categorical_features, copy=True)
2076
2077
/data/dataiku-dss-4.2.3/python.packages/sklearn/preprocessing/data.pyc in _transform_selected(X, transform, selected, copy)
1807 X : array or sparse matrix, shape=(n_samples, n_features_new)
1808 """
-> 1809 X = check_array(X, accept_sparse='csc', copy=copy, dtype=FLOAT_DTYPES)
1810
1811 if isinstance(selected, six.string_types) and selected == "all":
/data/dataiku-dss-4.2.3/python.packages/sklearn/utils/validation.pyc in check_array(array, accept_sparse, dtype, order, copy, force_all_finite, ensure_2d, allow_nd, ensure_min_samples, ensure_min_features, warn_on_dtype, estimator)
431 force_all_finite)
432 else:
--> 433 array = np.array(array, dtype=dtype, order=order, copy=copy)
434
435 if ensure_2d:
ValueError: could not convert string to float: V2781
最佳答案
我发现了错误。整个部分
ohe_trans = pd.DataFrame.from_records(data=ohe.transform(X[cols]),
columns = col_order)
ohe_trans.index=X.index
if drops:
ohe_trans = ohe_trans.drop(drops, axis=1)
X = X.drop(cols, axis=1)
在列循环内。需要在上一个循环完成后运行。
关于python - 自定义 scikit 编码器抛出转换错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51295392/
我正在尝试将一个字符串逐个字符地复制到另一个字符串中。目的不是复制整个字符串,而是复制其中的一部分(我稍后会为此做一些条件......) 但我不知道如何使用迭代器。 你能帮帮我吗? std::stri
我想将 void 指针转换为结构引用。 结构的最小示例: #include "Interface.h" class Foo { public: Foo() : mAddress((uint
这有点烦人:我有一个 div,它从窗口的左上角开始过渡,即使它位于文档的其他任何位置。我试过 usign -webkit-transform-origin 但没有成功,也许我用错了。有人可以帮助我吗?
假设,如果将 CSS3 转换/转换/动画分配给 DOM 元素,我是否可以检测到该过程的状态? 我想这样做的原因是因为我正在寻找类似过渡链的东西,例如,在前一个过渡之后运行一个过渡。 最佳答案 我在 h
最近我遇到了“不稳定”屏幕,这很可能是由 CSS 转换引起的。事实上,它只发生在 Chrome 浏览器 上(可能还有 Safari,因为一些人也报告了它)。知道如何让它看起来光滑吗?此外,您可能会注意
我正在开发一个简单的 slider ,它使用 CSS 过渡来为幻灯片设置动画。我用一些基本样式和一些 javascript 创建了一支笔 here .注意:由于 Codepen 使用 Prefixfr
我正在使用以下代码返回 IList: public IList FindCodesByCountry(string country) { var query =
如何设计像这样的操作: 计算 转化 翻译 例如:从“EUR”转换为“CNY”金额“100”。 这是 /convert?from=EUR&to=CNY&amount=100 RESTful 吗? 最佳答
我使用 jquery 组合了一个图像滚动器,如下所示 function rotateImages(whichHolder, start) { var images = $('#' +which
如何使用 CSS (-moz-transform) 更改一个如下所示的 div: 最佳答案 你可以看看Mozilla Developer Center .甚至还有例子。 但是,在我看来,您的具体示例不
我需要帮助我正在尝试在选中和未选中的汉堡菜单上实现动画。我能够为菜单设置动画,但我不知道如何在转换为 0 时为左菜单动画设置动画 &__menu { transform: translateX(
我正在为字典格式之间的转换而苦苦挣扎:我正在尝试将下面的项目数组转换为下面的结果数组。本质上是通过在项目第一个元素中查找重复项,然后仅在第一个参数不同时才将文件添加到结果集中。 var items:[
如果我有两个定义相同的结构,那么在它们之间进行转换的最佳方式是什么? struct A { int i; float f; }; struct B { int i; float f; }; void
我编写了一个 javascript 代码,可以将视口(viewport)从一个链接滑动到另一个链接。基本上一切正常,你怎么能在那里看到http://jsfiddle.net/DruwJ/8/ 我现在的
我需要将文件上传到 meteor ,对其进行一些图像处理(必要时进行图像转换,从图像生成缩略图),然后将其存储在外部图像存储服务器(s3)中。这应该尽可能快。 您对 nodejs 图像处理库有什么建议
刚开始接触KDB+,有一些问题很难从Q for Mortals中得到。 说,这里 http://code.kx.com/wiki/JB:QforMortals2/casting_and_enumera
我在这里的一个项目中使用 JSF 1.2 和 IceFaces 1.8。 我有一个页面,它基本上是一大堆浮点数字段的大编辑网格。这是通过 inputText 实现的页面上的字段指向具有原始值的值对象
ScnMatrix4 是一个 4x4 矩阵。我的问题是什么矩阵行对应于位置(ScnVector3),旋转(ScnVector4),比例(ScnVector3)。第 4 行是空的吗? 编辑: 我玩弄了
恐怕我是 Scala 新手: 我正在尝试根据一些简单的逻辑将 Map 转换为新 Map: val postVals = Map("test" -> "testing1", "test2" -> "te
输入: This is sample 1 This is sample 2 输出: ~COLOR~[Green]This is sample 1~COLOR~[Red]This is sam
我是一名优秀的程序员,十分优秀!