使用受限制的boltzmann计算机填充pandas数据帧中缺少的值。

sherlockml-boltzmannclean的Python项目详细描述


使用受限的boltzmann机器填充pandas数据帧中缺少的值。

提供一个实现scikit learn transformer接口的类,用于创建和训练受限的boltzmann机器。然后可以从中进行采样,以填充训练数据或相同格式的新数据中缺少的值。提供了将转换应用于pandas数据帧的实用程序函数,可以将列视为连续的数字或分类特征。

安装

pip install sherlockml-boltzmannclean

用法

为了用最少的忙乱填充数据帧中丢失的值,提供了一个清理功能。

importboltzmanncleanmy_clean_dataframe=boltzmannclean.clean(dataframe=my_dataframe,numerical_columns=['Height','Weight'],categorical_columns=['Colour','Shape'],tune_rbm=True# tune RBM hyperparameters for my data)

创建和使用底层scikit learn transformer。

my_rbm=boltzmannclean.RestrictedBoltzmannMachine(n_hidden=100,learn_rate=0.01,batchsize=10,dropout_fraction=0.5,max_epochs=1,adagrad=True)my_rbm.fit_transform(a_numpy_array)

这里,默认的rbm超参数是上面列出的那些参数,在上面操作的numpy数组应该完全由[0,1]或np.nan/none范围内的数字组成。超参数是:

  • n_hidden:隐藏层的大小
  • 学习率:随机梯度下降的学习率
  • batchSize:随机梯度下降的batchSize
  • dropout_fraction:训练过程中每次向后传球时要退出的隐藏节点的分数
  • {EM1}$Max LeimChels:训练数据上的最大传递数< /LI>
  • adagrad:是否对随机梯度下降使用adagrad更新规则

示例

importboltzmanncleanimportnumpyasnpimportpandasaspdfromsklearnimportdatasetsiris=datasets.load_iris()df_iris=pd.DataFrame(iris.data,columns=iris.feature_names)df_iris['target']=pd.Series(iris.target,dtype=str)df_iris.head()
_sepal length (cm)sepal width (cm)petal length (cm)petal width (cm)target
05.13.51.40.20
14.93.01.40.20
24.73.21.30.20
34.63.11.50.20
45.03.61.40.20

添加一些噪音:

noise=[(0,1),(2,0),(0,4)]fornoisyinnoise:df_iris.iloc[noisy]=Nonedf_iris.head()
_sepal length (cm)sepal width (cm)petal length (cm)petal width (cm)target
05.1NaN1.40.2None
14.93.01.40.20
2NaN3.21.30.20
34.63.11.50.20
45.03.61.40.20

清除数据框:

df_iris_cleaned=boltzmannclean.clean(dataframe=df_iris,numerical_columns=['sepal length (cm)','sepal width (cm)','petal length (cm)','petal width (cm)'],categorical_columns=['target'],tune_rbm=True)df_iris_cleaned.round(1).head()
_sepal length (cm)sepal width (cm)petal length (cm)petal width (cm)target
05.13.31.40.20
14.93.01.40.20
26.33.21.30.20
34.63.11.50.20
45.03.61.40.20

数据集越大,相关性越强,估算值就越好。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java无法启动应用程序:JNLP错误   java根据用户输入在PreparedStatement中使用setTime()或setNull()   java EJB与同步   java以object为键通过hashmap进行搜索   java中的模10^9+7   针对包含其他对象的对象的java OOP最佳实践   如何将字符串作为HTML代码从Java文件读取到JSP页面?   java我的POM怎么了?“解析表达式..检测到递归表达式循环”   用于Hbase的Mapreduce的java NoSuchMethodError   JAVAlang.SecurityException:权限拒绝:启动意图{act=安卓.Intent.action.MAIN cat=[安卓.Intent.category.LAUNCHER]   数组初始化谜语Java   通过arraylist搜索时的java句柄关联