圈圈456 2022-05-20 21:47 采纳率: 90.9%
浏览 1865
已结题

Python Process finished with exit code -1073741510 (0xC000013A: interrupted by Ctrl+C)

运行sklearn的GBDT时,使用.fit()函数总是出现错误,一直没出现结果,且程序无中断一直运行,手动停止后出现以下提示:

img

问题相关代码,请勿粘贴截图
import cv2
import numpy as np
from osgeo import gdal, gdalconst
import sys
import os
import pandas as pd
from osgeo import gdal
import matplotlib.pyplot as plt
from sklearn import ensemble
from sklearn import datasets
from sklearn.model_selection import train_test_split
from itertools import chain
from tqdm import tqdm
import time

text = ""
for char in tqdm(["a", "b"]):
    text = text + char
    time.sleep(0.5)


#  读取tif数据 to
def read_tif_array(path, filetype):
    pathDir = os.listdir(path)  # 文件放置在当前文件夹中,用来获取当前文件夹内所有文件目录
    array = {}
    i = 0
    for x in pathDir:
        index = x.rfind('.')
        if x[index:] == filetype:
            tif = cv2.imread(path + "/" + x, -1)
            tif = list(chain(*tif))
            array[x[:index]] = tif
            i = i + 1
        else:
            i = i
    array = pd.DataFrame(array).values
    return array

# 读取特征值
feature = read_tif_array("D:/Personality/paper/GBDT/train", '.tif')


# print(len(feature))  # 一共有15个特征值

# 读取地质类为标签
label = read_tif_array("D:/Personality/paper/GBDT/label", '.tif')
label = label.ravel()

X, y = feature, label
labels, y = np.unique(y, return_inverse=True)  # 标签
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.8, random_state=0)  # 创建数据集


original_params = {
    "n_estimators": 400,
    "max_leaf_nodes": 4,
    "max_depth": None,
    "random_state": 2,
    "min_samples_split": 5,
}  # 设置树的基本参数,用于后面计算
setting = {"learning_rate": 0.2, "subsample": 1.0}
params = dict(original_params)  # 转化为字典
params.update(setting)  # 更新字典键值对
clf = ensemble.GradientBoostingClassifier(**params)  # 梯度
blf = clf.fit(X_train, y_train)






# tif为array
def load_imgarray(img_file_path):
    """
    读取栅格数据,将其转换成对应数组
    :param: img_file_path: 栅格数据路径
    :return: 返回投影,几何信息,和转换后的数组(5888,5888,10)
    """
    dataset = gdal.Open(img_file_path)  # 读取栅格数据
    print('处理图像的栅格波段数总共有:', dataset.RasterCount)

    # 判断是否读取到数据
    if dataset is None:
        print('Unable to open *.tif')
        sys.exit(1)  # 退出

    projection = dataset.GetProjection()  # 投影
    transform = dataset.GetGeoTransform()  # 几何信息

    # 直接读取dataset
    img_array = dataset.ReadAsArray()

    return projection, transform, img_array



# tiff_file为tif, data_array为数组
def Write_imgarray(tiff_file, im_proj, im_geotrans, data_array):
    if 'int8' in data_array.dtype.name:
        datatype = gdal.GDT_Int16
    elif 'int16' in data_array.dtype.name:
        datatype = gdal.GDT_Int16
    else:
        datatype = gdal.GDT_Float32

    if len(data_array.shape) == 3:
        im_bands, im_height, im_width = data_array.shape
    else:
        im_bands, (im_height, im_width) = 1, data_array.shape

    driver = gdal.GetDriverByName("GTiff")
    dataset = driver.Create(tiff_file, im_width, im_height, im_bands, datatype)

    dataset.SetGeoTransform(im_geotrans)
    dataset.SetProjection(im_proj)

    if im_bands == 1:
        dataset.GetRasterBand(1).WriteArray(data_array)
    else:
        for i in range(im_bands):
            dataset.GetRasterBand(i + 1).WriteArray(data_array[i])

    del dataset



运行结果及报错内容
我的解答思路和尝试过的方法

以为是栈溢出的问题,尝试修改大小,但无济于事。

我想要达到的结果
  • 写回答

2条回答 默认 最新

  • hyh123a 全栈领域新星创作者 2022-05-20 22:20
    关注

    原因
    这个错误提示是因为你手动停止这个程序的报错,
    跟你的程序没什么关系,即使是一个正常运行的程序,直接关闭也会有这样的报错。

    如果需要帮助的话,你需要粘贴出真正的错误信息

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 5月29日
  • 已采纳回答 5月21日
  • 创建了问题 5月20日

悬赏问题

  • ¥50 导入文件到网吧的电脑并且在重启之后不会被恢复
  • ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。
  • ¥15 绘制多分类任务的roc曲线时只画出了一类的roc,其它的auc显示为nan
  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝
  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
  • ¥15 错误 LNK2001 无法解析的外部符号
  • ¥50 安装pyaudiokits失败
  • ¥15 计组这些题应该咋做呀
  • ¥60 更换迈创SOL6M4AE卡的时候,驱动要重新装才能使用,怎么解决?