小编Joh*_*ohn的帖子

Python - y 应该是一个一维数组,而是一个形状数组

让我们考虑一下数据:

import numpy as np
from sklearn.linear_model import LogisticRegression

x=np.linspace(0,2*np.pi,80)
x = x.reshape(-1,1)
y = np.sin(x)+np.random.normal(0,0.4,80)  
y[y<1/2] = 0  
y[y>1/2] = 1
clf=LogisticRegression(solver="saga", max_iter = 1000)
Run Code Online (Sandbox Code Playgroud)

我想拟合逻辑回归,其中 y 是因变量,x 是自变量。但是当我使用时:

clf.fit(x,y) 
Run Code Online (Sandbox Code Playgroud)

我看到错误

'y  should be a 1d array, got an array of shape (80, 80) instead'. 
Run Code Online (Sandbox Code Playgroud)

我尝试使用以下方式重塑数据

y=y.reshape(-1,1) 
Run Code Online (Sandbox Code Playgroud)

但我最终得到了长度为 6400 的数组!(怎么会?)

你能帮我执行这个回归吗?

python numpy scikit-learn

7
推荐指数
1
解决办法
9万
查看次数

是否有可能将 kable 表保存在 .tex 或 .markdown 中?

让我们考虑一个非常简单的 kable 表作为可重现的示例:

df <- data.frame("X_1" = c(1, 2), "X_2" =c(3,4))
df <- kable(df, format = 'latex')
df

\begin{tabular}{r|r}
\hline
X\_1 & X\_2\\
\hline
1 & 3\\
\hline
2 & 4\\
\hline
\end{tabular}
Run Code Online (Sandbox Code Playgroud)

是否有可能将此文件保存为 .tex 或 .markdown ?我寻找功能save_kable,但似乎它只支持.png,.pdf.jpeg格式。

r dataframe knitr kable

6
推荐指数
1
解决办法
3283
查看次数

如何用不同颜色绘制 3D PCA?

让我们获取以下数据:

 import numpy as np
from sklearn.datasets import load_breast_cancer
import pandas as pd
from sklearn.decomposition import PCA
from sklearn import datasets
from sklearn.preprocessing import StandardScaler
Run Code Online (Sandbox Code Playgroud)

让我们考虑一下数据

data = load_breast_cancer()
X = data.data
y = data.target
sc = StandardScaler()
Run Code Online (Sandbox Code Playgroud)

我想绘制具有 3 个分量的 PCA 3D 图,但我只能对前两个分量进行绘制。

到目前为止我的工作

scaler=StandardScaler()
scaler.fit(X) 
X_scaled=scaler.transform(X)
pca=PCA(n_components=3)
pca.fit(X_scaled) 
X_pca=pca.transform(X_scaled) 
ex_variance=np.var(X_pca,axis=0)
ex_variance_ratio = ex_variance/np.sum(ex_variance)
ex_variance_ratio


Xax=X_pca[:,0]
Yax=X_pca[:,1]
cdict={0:'red',1:'green'}
labl={0:'Malignant',1:'Benign'}
marker={0:'*',1:'o'}
alpha={0:.3, 1:.5}
fig,ax=plt.subplots(figsize=(7,5))
fig.patch.set_facecolor('white')
for l in np.unique(y):
 ix=np.where(y==l)
 ax.scatter(Xax[ix],Yax[ix],c=cdict[l],s=40,
           label=labl[l],marker=marker[l],alpha=alpha[l])
# for loop ends
plt.xlabel("First Principal Component",fontsize=14)
plt.ylabel("Second …
Run Code Online (Sandbox Code Playgroud)

python numpy matplotlib pandas scikit-learn

5
推荐指数
1
解决办法
1万
查看次数

没有测试的单元测试

有一件事让我感到奇怪。我读过一些关于单元测试的内容,我读到的所有内容都与 testthat(为单元测试创​​建的包)密切相关。但是可以肯定的是,R 中有其他方法可以在不使用 testthat 包的情况下进行单元测试。那么为什么它们如此不受欢迎以至于很难找到关于它的文章呢?压倒单元测试市场的 testthat 包的主要优势是什么?

unit-testing r

4
推荐指数
1
解决办法
82
查看次数

警告和消息有什么区别?

我已阅读http://adv-r.had.co.nz/Exceptions-Debugging.html,我所理解的是我们有三种主要类型的条件(我将其称为错误):

  • 错误
  • 警告
  • 信息

据我了解,错误是非常不合适的事情,它可能对我们的功能非常有害(最严重的错误类型)。但我无法区分警告和消息。我想说的是,一条消息共享有关我们代码中某些可能存在的错误部分的附加信息,但这不会直接影响我们的代码(这意味着我们的代码可以工作,但有一些我们应该注意的附加信息)。

  • 警告和按摩到底有什么区别?
  • 我是否正确理解错误的含义?

unit-testing r try-catch

2
推荐指数
1
解决办法
833
查看次数

如何更改已存在的ggplot的标题?

让我们考虑以下 ggplot:

plot_1 <- ggplot() +
  aes(x = 1:100, y = 1:100) +
  geom_point() +
  labs(title = "Title_1") +
  theme(plot.title = element_text(hjust = 0.5))

plot_1
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

我的问题是 - 如何将plot_1from的标题更改Title_1Title_2?或者当然我可以用 来创建新的图labs(title = "Title_2"),但是如果我有很长的代码,那么仅更改图的标题时就会非常多余。那么 ggplot 中是否有任何方法可以更改绘图的标题,但不能从头开始创建新的标题?

label r ggplot2

2
推荐指数
1
解决办法
659
查看次数

绘制附加输入中给出的特定图形 (ggplot)

我有我解决的问题,但我认为我的解决方案是在处理更多变量时涉及且无效。我想编写一个结合三个图的函数:

  1. 来自标准正态分布的数字

  2. 来自标准均匀分布的数字

  3. 来自标准指数分布的数字

可以指定样本的长度。同样在输出中,我想要一个名为 plot_types 的额外输入。默认情况下,它会组合所有图形。但是用户也可以准确指定应该包括哪些图。例如,如果plot_types==c('Norm.plot','Unif.plot')R 应该只绘制正态分布和均匀分布中的数字,而忽略指数分布中的数字。

我的工作到目前为止

我写了以下代码:

library(ggplot2)
library(gridExtra)

visual=function(num,plot_types='all'){
  Norm.plot <- ggplot()+
    geom_line(aes(x=1:num,y=rnorm(num)))+
    labs(title='Norm plot',x=NULL,y=NULL)+ 
    theme(plot.title = element_text(hjust = 0.5))
  
  Unif.plot <- ggplot()+
    geom_line(aes(x=1:num,y=runif(num)))+
    labs(title='Unif plot',x=NULL,y=NULL)+ 
    theme(plot.title = element_text(hjust = 0.5))
  
  Exp.plot <- ggplot()+
    geom_line(aes(x=1:num,y=rexp(num)))+
    labs(title='Exp plot',x=NULL,y=NULL)+ 
    theme(plot.title = element_text(hjust = 0.5))
  
  if (plot_types=='all'){grid.arrange(Norm.plot,Exp.plot, Unif.plot,ncol=2)}
  else if (plot_types==c('Norm.plot','Unif.plot') || 
           plot_types==c('Unif.plot','Norm.plot')){grid.arrange(Norm.plot, Unif.plot)}
  else if (plot_types==c('Norm.plot','Exp.plot') ||
           plot_types==c('Exp.plot','Norm.plot')){grid.arrange(Norm.plot, Exp.plot)}
  else if (plot_types==c('Unif.plot','Exp.plot') || 
           plot_types==c('Exp.plot','Unif.plot')){grid.arrange(Exp.plot, Unif.plot)}
}

visual(50,plot_types = c('Norm.plot','Unif.plot'))
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

上面的代码有几个问题。第一个是它有很多循环,所以效率很低。当试图将其扩展到更多变量时,这也将是非常有问题的。

你有什么想法我怎么能省略使用这么多循环?

r ggplot2

1
推荐指数
1
解决办法
42
查看次数

按向量次数重复向量

让我们考虑字符串向量:

string_vector <- c("big & huge", "big & huge & small", "tiny",
                   "very_small & tremendous")
Run Code Online (Sandbox Code Playgroud)

另一个包含整数的向量:

number <- c(2, 1, 3, 4)
Run Code Online (Sandbox Code Playgroud)

我想通过等于number向量中相应整数的次数来重复 string_vector 的元素。即string_vector[1]重复number[1]次数,string_vector[2]重复number[2]次数等。

我的解决方案

我的解决方案是最直接的:

vec <- c()
for (i in seq_len(length(number))) {
  vec <- append(vec, rep(string_vector[i], number[i]))
}
Run Code Online (Sandbox Code Playgroud)

问题

我的问题是我的解决方案有点不方便。我在想是否有可能以某种方式省略循环。我不太确定如何做到这一点。不知道如何通过不使用循环来解决这个问题?

string loops r vector

1
推荐指数
1
解决办法
21
查看次数