小编Ach*_*113的帖子

确定 k 均值聚类的准确性

我想使用 sklearns k-means 聚类函数对鸢尾花数据集进行分类(虽然我删除了标签,所以现在它是未标记的数据)。我已经制作了预测模型,输出似乎在很大程度上正确地对数据进行了分类,但是它是随机选择标签(0、1 和 2),我无法将其与我自己的标签进行比较以确定准确性(我将 setosa 标记为 0,versicolor 标记为 1,virginica 标记为 2)。有什么方法可以正确地给花贴上标签吗?

代码如下:

from sklearn.cluster import KMeans
cluster = KMeans(n_clusters = 3)
cluster.fit(features)
pred = cluster.labels_
score = round(accuracy_score(pred, name_val), 4)
print('Accuracy scored using k-means clustering: ', score)
Run Code Online (Sandbox Code Playgroud)

特征,如预期包含特征,name_val是包含花值的矩阵,0代表setosa,1代表versicolor,2代表virginica

编辑:我想出的一个解决方案是将 random_state 设置为任意数字,以便标签保持不变,还有其他解决方案吗?

python k-means scikit-learn

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

生成唯一随机数数组

我正在编写一个函数,该函数应该使用从0到n的随机数填充数组(其中n是传递给该函数的参数),但是数组中的所有数字都应该是唯一的。我基本上需要将数字数组从0改到n

我在这里找到了这个答案:用C编程语言在整数数组中的唯一随机数

并使用了用户建议的“ Knuth算法”:

void generate_random_array(int count)
{
  int in, im;

  im = 0;
  srand(time(NULL));

  for (in = 0; in < count && im < count; ++in) {
    int rn = count - in;
    int rm = count - im;
    if (rand() % rn < rm) random_array[im++] = in; 
  }
}
Run Code Online (Sandbox Code Playgroud)

但是,此函数根本不会为我生成随机数,它只是创建了一个从0到count的数字数组。如何生成唯一数字的实际随机序列。

c random

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

如何从 np.datetime64 中提取小时/分钟/秒

我有一个日期时间对象,如下所示:

t = numpy.datetime64('2020-04-15T13:20:06.810000000') 我只想从中提取13:20:06. 我怎样才能做到这一点?

关于我发现的类似问题的所有答案都建议使用t.hourt.minute。但是当我尝试这样做时,我得到一个 AttributeError ,说 np.datetime64 对象没有这样的属性

python datetime numpy

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

预期的单位类型“()”,找到“enum std::option::Option”

我的函数看起来像这样:

pub fn new(s: String) -> Option<i32> {
    if s.len() > 10 {
        None
    }
    Some(10)
}
Run Code Online (Sandbox Code Playgroud)

当我尝试编译它时,我收到以下错误消息:

7 | /         if s.len() > 10 {
8 | |             None
  | |             ^^^^ expected `()`, found enum `std::option::Option`
9 | |         }
  | |         -- help: consider using a semicolon here
  | |_________|
  |           expected this to be `()`
  |
  = note: expected unit type `()`
                  found enum `std::option::Option<_>`
Run Code Online (Sandbox Code Playgroud)

我不确定我做错了什么。任何帮助,将不胜感激

rust

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

如何访问 Google Colab 笔记本上的文件

如何访问 Google Colab 左侧栏上的文件?默认情况下给出了示例数据,当我运行!ls sample_data命令时,它会按应有的方式列出文件:

anscombe.json             mnist_test.csv
california_housing_test.csv   mnist_train_small.csv
california_housing_train.csv  README.md
Run Code Online (Sandbox Code Playgroud)

但是当我运行以下代码时:

import pandas as pd
data = pd.read_csv('content/sample_data/mnist_test.csv')
print(data.head())
Run Code Online (Sandbox Code Playgroud)

我收到错误:FileNotFoundError

python google-colaboratory

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

Python 日志记录不写入文件

我正在尝试将一些数据记录到本地文件中,如下所示:

import logging

# dont know if format parameter is really necessary here
logging.basicConfig(filename='logs/server_logs.log', filemode='a', format='%(message)s') 

logging.info("some data")
Run Code Online (Sandbox Code Playgroud)

此代码确实生成了 0 kb 的“server_logs.log”文件,但它保持为空,没有附加任何文本。难道我做错了什么?

python logging python-3.x

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

将 HashMap 值转换为 BinaryHeap

我说的是std::collections::hash_map::Values结构体,它是.values()通过在HashMap. 这个结构真的让我感到困惑,如何在不迭代它们的情况下访问它的值?我想把这些值变成BinaryHeap这样:

let heap = BinaryHeap::from(map.values());
Run Code Online (Sandbox Code Playgroud)

我阅读了文档,似乎这个结构并没有真正访问其元素的简单方法

rust

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

Rust - 如何返回不同函数的错误?

给定两个这样的函数:

fn foo() -> Result<i32, Box<dyn std::error::Error>> {
    // returns an error if something goes wrong
}

fn bar() -> Result<bool, Box<dyn std::error::Error>> {
   let x = foo(); // could be ok or err
   if x.is_err() {
       return // I want to return whatever error occured in function foo
    }
}
Run Code Online (Sandbox Code Playgroud)

是否可以foo从 function返回函数中出现的确切错误bar?另请注意,枚举在这些功能上Result<T, E>有所不同T

rust

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

如何将字节转换为正确的十进制表示?

我有一个函数可以检查字符串的特定索引中的位(转换为字节表示):

fn check_bit(s: String) -> bool {
    let bytes = s.as_bytes(); // converts string to bytes
    let byte = s[0]; // pick first byte
    // byte here seems to be in decimal representation
    byte | 0xf7 == 0xff // therefore this returns incorrect value
}
Run Code Online (Sandbox Code Playgroud)

在对byte变量进行打印和算术运算后,我注意到这byte是一个十进制数。例如,对于 char b(的 ASCII 值0x98)byte 存储98为十进制,这会导致对它们进行按位运算时的值不正确。如何将此十进制值转换为正确的十六进制、二进制或十进制表示?(因为0x98我期望得到的十进制值152

ascii bit rust

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