- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在尝试使用 Pandas 和 scikit-learn 在 Python 中执行分类。我的数据集包含文本变量、数值变量和分类变量的混合。
假设我的数据集如下所示:
Project Cost Project Category Project Description Project Outcome
12392.2 ABC This is a description Fully Funded
493992.4 DEF Stack Overflow rocks Expired
我需要预测变量 Project Outcome
。这是我所做的(假设 df
包含我的数据集):
我将类别 Project Category
Và Project Outcome
转换为数值
df['Project Category'] = df['Project Category'].factorize()[0]
df['Project Outcome'] = df['Project Outcome'].factorize()[0]
数据集现在看起来像这样:
Project Cost Project Category Project Description Project Outcome
12392.2 0 This is a description 0
493992.4 1 Stack Overflow rocks 1
然后我使用 TF-IDF
tfidf_vectorizer = TfidfVectorizer()
df['Project Description'] = tfidf_vectorizer.fit_transform(df['Project Description'])
数据集现在看起来像这样:
Project Cost Project Category Project Description Project Outcome
12392.2 0 (0, 249)\t0.17070240732941433\n (0, 304)\t0.. 0
493992.4 1 (0, 249)\t0.17070240732941433\n (0, 304)\t0.. 1
既然所有变量现在都是数值,我想我可以开始训练我的模型了
X = df.drop(columns=['Project Outcome'], axis=1)
y = df['Project Outcome']
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=1)
model = MultinomialNB()
model.fit(X_train, y_train)
但我在尝试执行 model.fit
时收到错误 ValueError: setting an array element with a sequence.
。当我打印 X_train
时,我注意到 Project Description
由于某种原因被替换为 NaN
。
有什么帮助吗?使用具有各种数据类型的变量进行分类有什么好的方法吗?谢谢。
câu trả lời hay nhất
替换这个
df['Project Description'] = tfidf_vectorizer.fit_transform(df['Project Description'])
Và
df['Project Description'] = tfidf_vectorizer.fit_transform(df['Project Description']).toarray()
您还可以使用:tfidf_vectorizer.fit_transform(df['项目描述']).todense()
此外,您不应该简单地将类别转换为数字。例如,如果将 A、B 和 C 转换为 0,1 和 2。它们被视为 2>1>0,因此 C>B>A 通常不是这种情况,因为 A 只是不同于 B 和 C。对于您可以使用 One-Hot-Encoding(在 Pandas 中,您可以为此使用“get_dummies”)。您可以将以下代码用于所有分类特征。
#df has all not categorical features
featurelist_categorical = ['Project Category', 'Feature A',
'Feature B']
for i,j in zip(featurelist_categorical, ['Project Category','A','B']):
df = pd.concat([df, pd.get_dummies(data[i],prefix=j)], axis=1)
特征前缀不是必需的,但在多个分类特征的情况下会特别帮助你。
此外,如果您出于某种原因不想将特征拆分为数字,您可以使用 H2O.ai。使用 H2O,您可以直接将分类变量作为文本输入到模型中。
关于具有混合数据类型(文本、数字、分类)的 Python scikit-learn 分类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53023341/
Đây là đoạn mã. Vui lòng cho tôi biết thuật toán lưu trữ dữ liệu lớn trong bộ nhớ nhỏ này là gì. public static void main(String[] args) { long longValue = 21474836
Vì vậy tôi sử dụng imap để nhận email từ gmail và outlook. Gmail được mã hóa như thế này =?UTF-8?B?UmU6IM69zq3OvyDOtc68zrHOuc67IG5ldyBlbWFpb
Tôi đã học mã C từ lâu và muốn thử điều gì đó mới mẻ và khác biệt với Đề án. Tôi đang cố gắng tạo một thủ tục lấy hai đối số và trả về giá trị lớn hơn trong hai đối số đó, như (define (larger xy) (if (> x
Có hai tùy chọn cấu hình sao lưu cho kho Azure Recovery Services - LRS so với GRS Đây là câu hỏi về kho Azure Recovery Services. Làm cách nào để bạn xử lý kho lưu trữ Dịch vụ khôi phục có bật tính năng dự phòng địa lý khi khu vực chứa nó bị lỗi? Nếu dịch vụ khôi phục không được kích hoạt
Giả sử tôi có thực thể sau: @Entity public class A { @Id @GeneratedValue Private Long id; @Embedded Private;
Tôi có câu hỏi tiếp theo. Tôi có tiêu chí tiếp theo: Criteria.add(Restrictions.in("entity.otherEntity", getOtherEntitiesList()));
Nếu đây là bản sao của bất kỳ loại nào thì tôi sẽ đăng ký trước, nhưng tôi không thể tìm thấy bất kỳ điều gì giải quyết được vấn đề cụ thể của mình. Đây là chương trình của tôi: import java.util.Random; public class CarnivalGame{
Tôi hiện đang sử dụng golang để tạo một đường dẫn tổng hợp nơi tôi truy vấn các tài liệu bằng toán tử "$ hoặc". Kết quả là một loạt tài liệu chưa được nhóm cần được nhóm lại để tôi có thể chuyển sang giai đoạn tiếp theo là tìm điểm giao nhau giữa hai tập dữ liệu. Sau đó sử dụng nó để làm điều đó trong một bộ sưu tập riêng
Có thể tạo điều kiện OR trong biểu thức chính quy. Tôi đang cố gắng tìm kết quả khớp cho danh sách tên tệp chứa mẫu như vậy, trường hợp đầu tiên xxxxx-hello.file hoặc trường hợp hai xxxx-hello-unasigned.file
Chương trình này chỉ đơn giản tạo ra hình dạng của một viên kim cương khi người dùng nhập số hàng, do đó, nó có 6 vòng for; 3 vòng để tạo hình tam giác đầu tiên, 3 vòng để tạo hình tam giác còn lại và với 2 hình tam giác và 6 vòng này, chúng tôi có một hình thoi và đây là toàn bộ chương trình
Tôi có một chuỗi truy vấn như thế này www.google.com?Department=Education & Finance&Department=Health Tôi có các thẻ li này và chuỗi truy vấn của chúng giống như thế này
Tôi có một lớp với hàm tạo tĩnh mà tôi sử dụng để đọc các giá trị app.config. Cách kiểm tra đơn vị một lớp có các giá trị cấu hình khác nhau. Tôi đang nghĩ đến việc chạy từng thử nghiệm trong một miền ứng dụng khác để tôi có thể thực hiện một hàm tạo tĩnh cho mỗi thử nghiệm - nhưng tôi
Tôi đang tìm một vùng chứa có thể chứa nhiều khóa, nếu tôi nhập giá trị dành riêng (ví dụ: 0) cho một trong các giá trị khóa, nó sẽ được coi là tìm kiếm OR. bản đồ, int > myContainer; myContainer.insert(make_
Tôi đang tạo cơ sở dữ liệu cho một ứng dụng web và đang tìm kiếm một số lời khuyên về cách lập mô hình một thực thể duy nhất có thể có nhiều loại, mỗi loại có các thuộc tính khác nhau. Ví dụ: giả sử tôi muốn tạo một mô hình quan hệ cho đối tượng "nguồn dữ liệu". Tất cả các nguồn dữ liệu sẽ có một số thuộc tính chung
(1) =>TẠO BẢNG T1(id BIGSERIAL PRIMARY KEY, tên TEXT); TẠO BẢNG (2) =>CHÈN VÀO T1 (tên)
Tôi không chắc chắn cách giải quyết các tham chiếu cột không rõ ràng khi sử dụng bí danh. Giả sử có hai bảng a và b, cả hai đều có cột tên. Nếu tôi nối hai bảng này và thêm bí danh vào kết quả, tôi không biết cách tham chiếu cột tên cho cả hai bảng. Tôi đã thử một số biến thể,
Truy vấn của tôi là: select * from table trong đó id IN (1,5,4,3,2) Điều tôi muốn chính xác là cùng một thứ tự, không phải từ 1...5 mà từ 1,5,4, 3,2. Làm thế nào tôi có thể làm điều này? hầu hết
Tôi đang sử dụng mã C# để thực thi truy vấn MySQL được tạo động. Ném ngoại lệ: TẠO TABLE kết xuất ("@employee_OID" VARCHAR(50)); "{"Bạn có một er
Tôi có ngày 2016-03-30T23:59:59.000000+0000. Tôi có thể biết định dạng của nó là gì không? Bởi vì nếu tôi sử dụng yyyy-MM-dd'T'HH:mm:ss.SSS thì nó sẽ ném ra ngoại lệ Sim trả lời hay nhất
Tôi có một lược đồ mẫu và Fiddle SQL của nó như sau: http://sqlfiddle.com/#!2/6816b/2 Fiddle này chỉ đơn giản truy vấn cơ sở dữ liệu mẫu dựa trên các điều kiện trong mệnh đề Where như sau:
Tôi là một lập trình viên xuất sắc, rất giỏi!