import numpy as np import sklearn import pandas as pd data = pd.read_csv('C:/Users/86159/Desktop/TaxDetection_NoLable.csv') data.head(11) X=data.loc[:,:] y=data.loc[:,] from sklearn.model_selection import train_test_split X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=0) from sklearn.neighbors import KNeighborsClassifier clf = KNeighborsClassifier(n_neighbors=3) clf.fit(X_train, y_train.astype('int')) print("Test set predictions: {}".format(clf.predict(X_test))) print("Training set score:{:.2f}".format(clf.score(X_train,y_train))) print("Test set accuracy: {:.2f}".format(clf.score(X_test, y_test)))
时间: 2024-01-26 15:02:49 浏览: 78
这段代码中有一个问题,即y的赋值语句中没有指定具体的列名或索引,因此会导致后面的代码无法正确地运行。你需要指定y的列名或索引,以便正确地将y数据提取出来。假设你的数据集中有一个名为"label"的列,你可以将y的赋值语句修改为:
```
y = data.loc[:, "label"]
```
这样就可以将"label"列的数据提取出来作为y数据了。
相关问题
import numpy as np import pandas as pd train_data = pd.read_csv("C://Users//Dell//Desktop//数据分析作业//adult_train(1).csv") test_data = pd.read_csv("C://Users//Dell//Desktop//数据分析作业//adult_test.csv") #写入csv文件 columns = ['Age','Workclass','fnlgwt','Education','EdNum','MaritalStatus', 'Occupation','Relationship','Race','Sex','CapitalGain', 'CapitalLoss','HoursPerWeek','Country','Income'] #写入名称 df_train_set = pd.read_csv('C://Users//Dell//Desktop//数据分析作业//adult_train(1).csv', names=columns) #跳过表头 df_test_set = pd.read_csv('C://Users//Dell//Desktop//数据分析作业//adult_test.csv', names=columns, skiprows=1) #删除ID序列号栏 df_train_set.drop('fnlgwt', axis=1, inplace=True) df_test_set.drop('fnlgwt', axis=1, inplace=True) #用unknown替换? for i in df_train_set.columns: df_train_set[i].replace('?', 'Unknown', inplace=True) df_test_set[i].replace('?', 'Unknown', inplace=True) #去掉非int64类型数据中的点和空格 for col in df_train_set.columns: if df_train_set[col].dtype != 'int64': df_train_set[col] = df_train_set[col].apply(lambda val: val.replace(" ", "")) df_train_set[col] = df_train_set[col].apply(lambda val: val.replace(".", "")) df_test_set[col] = df_test_set[col].apply(lambda val: val.replace(" ", "")) df_test_set[col] = df_test_set[col].apply(lambda val: val.replace(".", "")) # 将训练集导出为 csv 文件 df_train_set.to_csv('train_set.csv', index=False) # 将测试集导出为 csv 文件 df_test_set.to_csv('test_set.csv', index=False)
这段代码是用来读取和预处理成人收入数据集(Adult dataset)的。其中包括读取训练集和测试集的csv文件,去掉ID序列号栏,用"Unknown"替换缺失值"?",去除非int64类型数据中的点和空格,并将处理后的数据集导出为csv文件。该数据集是一个二分类问题,目标是预测一个人的收入是否超过50K美元。这段代码中的预处理是为了对数据进行清洗和转换,以便更好地进行建模和预测。
优化以下代码使其提取csv文件中有小数点的行import numpy as np import pandas as pd data = pd.read_csv(r'C:\Users\Admin\Desktop\bisaifiles\population.csv',header=None) data decimal_data = df[df.dtypes == float] print(decimal_data.index.tolist())
以下是优化后的代码,它可以提取csv文件中有小数点的行:
```python
import pandas as pd
# 读取csv文件
data = pd.read_csv(r'C:\Users\Admin\Desktop\bisaifiles\population.csv', header=None)
# 将数据类型转换为float
data = data.apply(pd.to_numeric, errors='coerce')
# 提取有小数点的行
decimal_data = data[data.apply(lambda x: x.dtype == 'float64' or x.dtype == 'float32')]
# 输出有小数点的行的索引
print(decimal_data.index.tolist())
```
优化思路:
1. 使用 apply 函数将数据类型转换为 float;
2. 使用 apply 函数和 lambda 表达式判断每一列的数据类型是否为 float64 或 float32;
3. 通过布尔索引提取有小数点的行;
4. 输出有小数点的行的索引。
通过以上优化,代码实现更加简洁高效。
阅读全文