小编Li-*_*uan的帖子

我在修改玩具 scikit-learn gridsearchCV 示例时收到警告“UserWarning:一个或多个测试分数是非限定的”

我有以下代码可以正常工作但得到了一个

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)

python scikit-learn gridsearchcv

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

警告消息 (402):为参数临时创建的数组

我不断收到警告消息:

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)

format io fortran fortran90 intel-fortran

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

使用MPI_Init()

我遇到了一个关于使用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)

parallel-processing fortran mpi

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

MPI_BCAST()仅应用于基础组的一小部分

我将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)

parallel-processing fortran mpi fortran90

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