Необходимо удалить целевую переменную из тестовых данных, а затем дать оставшийся столбец информационного кадра в качестве входных данных для функции прогнозирования. Вы могли бы решить количество несовпадений функций.
Попробуйте это!
random_forest.predict(df_test.drop('Outcomes',axis=1))
Примечание: вам не нужно создавать фиктивные переменные целевых переменных для использования случайного леса или любых моделей на основе дерева решений.
То, что должен делать Bash, это неявное приведение кода завершения команд к логическому значению при передаче логическим операторам. PowerShell этого не делает, но можно создать функцию для переноса команды и создания того же поведения:
> function Get-ExitBoolean($cmd) { & $cmd | Out-Null; $? }
( $? Это логическое значение, содержащее успех последнего кода выхода )
Имеются два пакетных файла:
#pass.cmd
exit
и
#fail.cmd
exit /b 200
... поведение можно проверить:
> if (Get-ExitBoolean .\pass.cmd) { write pass } else { write fail }
pass
> if (Get-ExitBoolean .\fail.cmd) { write pass } else { write fail }
fail
Логические операторы должны оцениваться так же, как в Bash. Сначала установите псевдоним:
> Set-Alias geb Get-ExitBoolean
Тест:
> (geb .\pass.cmd) -and (geb .\fail.cmd)
False
> (geb .\fail.cmd) -and (geb .\pass.cmd)
False
> (geb .\pass.cmd) -and (geb .\pass.cmd)
True
> (geb .\pass.cmd) -or (geb .\fail.cmd)
True
Через много лет после того, как вопрос был впервые задан, позвольте мне кратко изложить состояние дел в PowerShell v5.1 :
Bash's / [ Операторы управления &&
и ||
112] не имеют эквивалентов PowerShell , и, поскольку вы не можете определить пользовательские операторы в PowerShell, нет хороших обходных путей :
Используйте отдельные команды (в отдельных строках или через ;
) и явно проверяйте статус успешности каждой команды с помощью автоматической переменной $?
, например:
command1 -arg1 -arg2; if ($?) { command2 -arg1 } # equivalent of &&
command1 -arg1 -arg2; if (-not $?) { command2 -arg1 } # equivalent of ||
Ниже показано, почему PowerShell -and
и -or
, как правило, не решение.
Был разговор о добавлении их некоторое время назад, но, похоже, он никогда не занимал первое место в списке.
&&
и ||
в настоящее время зарезервированы для будущего использования в PowerShell, поэтому есть надежда, что тот же синтаксис, что и в Bash, может быть реализован. 1 && 1
выдает сообщение об ошибке The token '&&' is not a valid statement separator in this version.
) -and
и -or
не являются заменой для &&
и ||
: операторы управления Bash &&
(короткое замыкание логического И) и ||
(короткое замыкание логического ИЛИ) неявно проверять статус успешности команд по их кодам выхода, , не влияя на их выходные потоки ; Например:
ls / nosuchfile && echo 'ok'
Независимо от того, что выводит ls
- и вывод stdout (файлы в /
), и вывод stderr (сообщение об ошибке при попытке доступа к несуществующему файлу nosuchfile
) - передается через , но &&
проверяет (невидимый) код выхода команды ls
, чтобы определить, является ли команда echo
- RHS элемента управления &&
оператор - должен быть выполнен.
ls
сообщает о коде выхода 1
в этом случае, сигнализируя об ошибке - поскольку файл nosuchfile
не существует - поэтому &&
решает, что ls
не удалось и, применяя короткое замыкание, решает, что команда echo
не должна выполняться.
Обратите внимание, что это код выхода 0
, который сигнализирует об успехе в мире cmd.exe
и bash
, тогда как любой ненулевой код выхода указывает на сбой.
Другими словами: &&
и ||
Баша работают полностью независимо от выхода команд и действуют только на статус успеха команд. 11118]
-and
и -or
PowerShell, напротив, действуют только на стандартный (успешный) вывод команд , потребляют его и затем выводит только логический результат операции ; Например:
(Get-ChildItem \, nosuchfile) -and 'ok'
Выше:
использует и потребляет успешных (стандартных) выхода - перечисление \
- и интерпретирует его как Boolean ; непустая входная коллекция считается $true
в логическом контексте, поэтому, если есть хотя бы одна запись, выражение оценивается как $true
.
nosuchfile
, пропускается , поскольку ошибки отправляются в отдельный поток. Учитывая, что Get-ChildItem \, nosuchfile
возвращает непустой успешный вывод, LHS оценивается как $true
, поэтому -and
также оценивает RHS, 'ok'
, но, опять же, потребляет свой вывод и интерпретирует его как логическое значение, которое, как непустая строка, также оценивается как $true
.
Таким образом, общий результат выражения -and
равен $true
, что является (единственным успехом) выводом .
Чистый эффект :
Результат успеха с обеих сторон выражения -and
равен ] потребляется во время оценки и, следовательно, эффективно скрыто .
Единственным (успешным) выводом выражения является его логический результат , который в данном случае равен $true
(который отображается как True
в терминале в англоязычных системах).
Мы можем использовать метод try catch finally вместо использования & amp; & amp; метод в powershell.
try {hostname} catch {echo err} finally {ipconfig /all | findstr bios}
Можно сделать что-то вроде этого, где Вы скрываете булев вывод с [пустотой] и только получаете побочный эффект. В этом случае, если $a или $b являются пустыми, то $c присвоен $result. Присвоение может быть выражением.
$a = ''
$b = ''
$c = 'hi'
[void](
($result = $a) -or
($result = $b) -or
($result = $c))
$result
производит
hi