我正在构建二进制分类问题的模型,其中我的每个数据点都是300维(我使用300个特征).我正在使用sklearn的PassiveAggressiveClassifier.该模型表现非常好.
我希望绘制模型的决策边界.我怎么能这样做?
为了了解数据,我使用TSNE在2D中绘制它.我通过两个步骤减少了数据的维度 - 从300到50,然后从50减少到2(这是一个常见的推荐).以下是相同的代码段:
from sklearn.manifold import TSNE
from sklearn.decomposition import TruncatedSVD
X_Train_reduced = TruncatedSVD(n_components=50, random_state=0).fit_transform(X_train)
X_Train_embedded = TSNE(n_components=2, perplexity=40, verbose=2).fit_transform(X_Train_reduced)
#some convert lists of lists to 2 dataframes (df_train_neg, df_train_pos) depending on the label -
#plot the negative points and positive points
scatter(df_train_neg.val1, df_train_neg.val2, marker='o', c='red')
scatter(df_train_pos.val1, df_train_pos.val2, marker='x', c='green')
Run Code Online (Sandbox Code Playgroud)
我得到了一个体面的图表.
有没有办法可以为这个图添加一个决策边界,它代表我模型在300昏暗空间中的实际决策边界?
我观察到静态和机器学习科学家在使用Python(或其他语言)时通常不会遵循ML /数据科学项目的OOPS.
主要是因为在开发用于生产的ML代码时,缺乏对oops中最佳软件工程实践的理解.因为他们大多来自数学和统计学教育背景而不是计算机科学.
ML科学家开发临时原型代码和另一个软件团队使其生产就绪的日子在业界已经结束.
问题
fit(),transform(),fit_transform()功能为每一个过程是怎样的remove_missing(),outlier_removal()?当这样做时,为什么scikit-learn BaseEstimator通常会被继承?我想更新以前使用 MLFlow 完成的运行,即。更改/更新参数值以适应实现中的更改。典型用例:
丢弃整个实验并不总是那么容易,因为我需要保留以前的运行用于统计目的。我也不想只为单个新参数生成新实验,以保留单个运行数据库。
做这个的最好方式是什么?
我正在对python进行数据清理练习,我正在清理的文本包含我想删除的意大利语单词.我一直在网上搜索我是否可以使用像nltk这样的工具包在Python上执行此操作.
例如给出一些文字:
"Io andiamo to the beach with my amico."
Run Code Online (Sandbox Code Playgroud)
我想留下:
"to the beach with my"
Run Code Online (Sandbox Code Playgroud)
有谁知道如何做到这一点?任何帮助将非常感激.
新的 macbook m1 适合数据科学吗?
数据科学 python 库,如 pandas、numpy、sklearn 等是否在 macbook m1(Apple Silicon)芯片上工作,与上一代基于英特尔的 macbook 相比有多快?
我正在尝试安装 CUDA 工具包,以便能够在我的个人计算机中使用 Thundersvm。但是,我一直在 GUI 安装程序中收到以下消息:“您已经安装了较新版本的 NVIDIA Frameview SDK”
我在 CUDA 论坛中读到,这很可能是由于安装了 Geforce Experience(我已经安装)所致。所以我尝试从程序和功能窗口面板中删除它。但是我仍然遇到错误,所以我猜测“Nvidia Corporation”文件夹没有被删除。
在同一问题中,他们还建议执行自定义安装。但是,我找不到有关如何自定义安装 CUDA 工具包的任何信息。如果有人可以解释如何进行此自定义安装或安全地删除以前的驱动程序,我将不胜感激。我想过使用 DDU,但我读到有时它实际上可能会导致麻烦。
几周来我一直在尝试解决这个问题。我使用 Google Colaboratory是因为我的 MacBook Pro 配备了TensorFlow 不支持的Apple 芯片。这是具有评论权限的 Google Colaboratory 链接。 点击这里。
我尝试过使用旧版本的 TensorFlow,但没有任何改变,我已准备好 TensorFlow 记录和训练管道文件。
python object-detection data-science tensorflow tensorflow2.0
我正在尝试使用python库scikit-tensor分解3D矩阵.我设法将我的Tensor(尺寸为100x50x5)分解为三个矩阵.我的问题是如何使用Tensor分解产生的分解矩阵再次组合初始矩阵?我想检查分解是否有任何意义.我的代码如下:
import logging
from scipy.io.matlab import loadmat
from sktensor import dtensor, cp_als
import numpy as np
//Set logging to DEBUG to see CP-ALS information
logging.basicConfig(level=logging.DEBUG)
T = np.ones((400, 50))
T = dtensor(T)
P, fit, itr, exectimes = cp_als(T, 10, init='random')
// how can I re-compose the Matrix T? TA = np.dot(P.U[0], P.U[1].T)
Run Code Online (Sandbox Code Playgroud)
我正在使用scikit-tensor库函数cp_als提供的规范分解.此外,分解矩阵的预期维数是多少?
我尝试了两种实现轻型 GBM 的方法。期望它返回相同的值,但它没有。
我想lgb.LightGBMRegressor()和lgb.train(train_data, test_data)将返回相同的精度,但它没有。所以我想知道为什么?
def dataready(train, test, predictvar):
included_features = train.columns
y_test = test[predictvar].values
y_train = train[predictvar].ravel()
train = train.drop([predictvar], axis = 1)
test = test.drop([predictvar], axis = 1)
x_train = train.values
x_test = test.values
return x_train, y_train, x_test, y_test, train
Run Code Online (Sandbox Code Playgroud)
x_train, y_train, x_test, y_test, train2 = dataready(train, test, 'runtime.min')
train_data = lgb.Dataset(x_train, label=y_train)
test_data = lgb.Dataset(x_test, label=y_test)
Run Code Online (Sandbox Code Playgroud)
lgb1 = LMGBRegressor()
lgb1.fit(x_train, y_train)
lgb = lgb.train(parameters,train_data,valid_sets=test_data,num_boost_round=5000,early_stopping_rounds=100)
Run Code Online (Sandbox Code Playgroud)
我希望它大致相同,但事实并非如此。据我了解,一个是助推器,另一个是回归器?
我正在寻找有效的方法来删除数据中的异常值。我尝试了在 StackOverflow 和其他地方找到的几种解决方案,但没有一个对我有用(应该在样本数据中检测并删除 1993 年 6 月、1994 年 8 月和 1995 年 3 月的 4 个高值 21637、19590、21659 和 200000发布在这篇文章的末尾)。任何建议将不胜感激!
这是我到目前为止测试过的:
数据概览

3 个异常值仍然存在,并且时间序列末尾的许多合法高值已被删除。
y <- dat$Value
y_filter <- y[!y %in% boxplot.stats(y)$out]
plot(y_filter)
Run Code Online (Sandbox Code Playgroud)

与第一种方法类似的问题
FindOutliers <- function(data) {
data <- data[!is.na(data)]
lowerq = quantile(data)[2]
upperq = quantile(data)[4]
iqr = upperq - lowerq #Or use IQR(data)
# we identify extreme outliers
extreme.threshold.upper = (iqr * 1.5) + upperq
extreme.threshold.lower = lowerq - (iqr * 1.5)
result <- which(data …Run Code Online (Sandbox Code Playgroud) data-science ×10
python ×7
scikit-learn ×2
code-design ×1
cuda ×1
driver ×1
lightgbm ×1
logging ×1
math ×1
mlflow ×1
oop ×1
outliers ×1
pandas ×1
plot ×1
r ×1
scikits ×1
tensorflow ×1
time-series ×1
windows ×1