我有以下代码可以正常工作但得到了一个
UserWarning: One or more of the test scores are non-finite: [nan nan]
category=UserWarning
Run Code Online (Sandbox Code Playgroud)
当我将其修改为更简洁的版本时(显示在随后的代码片段中)。单热编码器的输出是问题的罪魁祸首吗?
import pandas as pd
from sklearn.model_selection import StratifiedKFold
from sklearn.linear_model import RidgeClassifier
from sklearn.compose import ColumnTransformer
from sklearn.preprocessing import StandardScaler, OneHotEncoder
from sklearn.model_selection import GridSearchCV
train = pd.read_csv('/train.csv')
test = pd.read_csv('/test.csv')
sparse_features = [col for col in train.columns if col.startswith('cat')]
dense_features = [col for col in train.columns if col not in sparse_features+['target']]
X = train.drop(['target'], axis=1)
y = train['target'].values
skf = StratifiedKFold(n_splits=5)
clf = RidgeClassifier() …Run Code Online (Sandbox Code Playgroud) 我不断收到警告消息:
forrtl: warning (402): fort: (1): In call to I/O Read routine, an array temporary was created for argument #1
Run Code Online (Sandbox Code Playgroud)
当我运行以下代码时。我在论坛上翻阅了有关同一问题的旧帖子(请参阅此处),但我不太确定答案是否适用于我手头的问题。谁能帮我摆脱这个警告信息?谢谢。
program main
implicit none
integer :: ndim, nrow, ncol
real, dimension(:,:), allocatable :: mat
ndim = 13
ncol = 1
allocate( mat(ncol,ndim))
call read_mat( mat, 'matrix.txt' )
contains
subroutine read_mat( mat, parafile)
implicit none
real, dimension(:,:), intent(out) :: mat
character(len=*), intent(in) :: parafile
character(len=500) :: par
character(len=80) :: fname1
integer :: n, m, pcnt, iostat
m = …Run Code Online (Sandbox Code Playgroud) 我遇到了一个关于使用MPI_Init()的问题.
我想在根处理器上使用下面的上下文中的代码初始化随机数" randv ".为了查看我的目标是否已实现,我让程序通过在" 调用RANDOM_NUMBER(randv) " 行之后立即放置一个do循环来打印出数组" randv " .
但是,结果屏幕上显示的是随机数组重复8次(假设处理器数量为8).我的问题是为什么在调用MPI_Init()之前初始化除根之外的处理器.如果唤醒所有处理器并且在唤起MPI_Init之前具有相同的随机数数组,为什么还要调用MPI_Init()来进行初始化?谢谢.
背风处
这是我使用的示例:
program main
include 'mpif.h'
integer :: i
integer :: ierr
integer :: irank
integer :: nrow, ncol
real, dimension(:,:), allocatable :: randv
nrow = 4
ncol = 2
allocate(randv(nrow,ncol))
call RANDOM_SEED
call RANDOM_NUMBER(randv)
do i = 1, nrow
write(*,'(2(f5.2,x))') randv(i,:)
enddo
call MPI_Init ( ierr )
allocate(row_list(ncol), col_list(nrow))
call MPI_Comm_rank ( MPI_COMM_WORLD, irank, ierr )
if( irank == 0 …Run Code Online (Sandbox Code Playgroud) 我将8个处理器分为两组,每组包含四个处理器.我要求每个子组的根使用子程序"MPI_BCAST"与其下属进行一些通信.
我遇到了一个问题:为了表明子组的根,我应该使用子组根与MPI_COMM_WORLD通信器对应的原始等级,还是使用新通信器表示的新等级?
以下面的代码片段为例,我想要P:0将数据发送到它的下属P:1,P:2和P:3,同样地,我要求P:4将其数据发送到P: 5,P:6,P:7.为了达到这个目标,我想知道我是否应该将第36行中的第四个参数指定为1,或者将它们分别指定为0和4,条件是我指的是哪个子组的头?
谢谢.背风处
1 program main
2 include 'mpif.h'
3 integer :: ierr, irank, num_procs, base_group
4 integer :: nrow, ncol, irow, icol
5 integer :: dummy_group, dummy_comm, new_comm, new_rank
6 integer :: i, j, roster(4), data(4)
7
8 call MPI_Init ( ierr )
9 call MPI_COMM_RANK( MPI_comm_world, irank, ierr )
10 call MPI_COMM_SIZE( MPI_comm_world, num_procs, ierr)
11 call MPI_COMM_GROUP( MPI_comm_world, base_group, ierr)
12 nrow = 4
13 ncol = 2
14 irow = mod( irank, nrow ) …Run Code Online (Sandbox Code Playgroud)