如何从python中的URL中提取特征?

Posted

技术标签:

【中文标题】如何从python中的URL中提取特征?【英文标题】:How to extract features from URLs in python? 【发布时间】:2018-10-02 16:17:57 【问题描述】:

我刚刚开始了一个检测钓鱼网站的分类项目。我正在使用 uci 数据集https://archive.ics.uci.edu/ml/machine-learning-databases/00327/Training%20Dataset.arff。 我正在尝试几个模型,例如 ANN、SVM、逻辑回归,并且我已经训练和测试了模型。

我的逻辑回归代码如下所示

#importing libraries
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd

#importing the dataset
dataset = pd.read_csv("phishcoop.csv")
x = dataset.iloc[: , :-1].values
y = dataset.iloc[:, -1]

#Split the dataset into training and test
from sklearn.cross_validation import train_test_split
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.25, 
train_size =0.75, random_state = 0)

#fitting logistic regression into training set
from sklearn.linear_model import LogisticRegression
classifier = LogisticRegression(random_state =0)
classifier.fit(x_train, y_train)

#Predicting values for test data
y_pred = classifier.predict(x_test)

#checking accurancy using confusion matrix
from sklearn.metrics import confusion_matrix
cm = confusion_matrix(y_test, y_pred)

现在我已经训练和测试了模型,我有一些问题

如何从用户输入的 url 中提取数据集中的 30 个特征 在python中有没有为此目的的库,可以帮助我提取这些特征

我是机器学习新手,第一次使用 url,如果我错了,请纠正我。

【问题讨论】:

你看过pypi.org/project/liac-arff吗? 我已将我的数据集转换为 csv docs.python.org/3.6/library/csv.html 那么也许? Python 有内置的 csv 解析。 是的,很好。为此,我使用了熊猫。 如果您不是在问如何从数据集中提取特征,那么您的问题是什么?什么是“用户将作为输入提供的 url”?您是否尝试解析该 URL?解析该 URL 指向的文件?如果是后者,你不说它是什么类型的文件。 【参考方案1】:

听起来你只是想解析一个 URL。然后获取可能提供的主机名的 IP。

对于 python 3(对于 Python 2,请在此处查看如何导入:https://docs.python.org/2/library/urlparse.html)

from urllib.parse import urlparse, parse_qs
import socket


url = 'http://example.com/x/y?a=1&b=2'

# Parse the URL
parsed = urlparse('http://example.com/x/y?a=1&b=2&a=3')

# For the parameters
params = parse_qs(parsed.query)
print(params)

# For path components
# Note: Depending on the URL, this may have empty strings so that's why the
# filter is used
path_components = list(filter(bool, parsed.path.split('/')))
print(path_components)

# Location
print(parsed.netloc)

# IP
print(socket.gethostbyname(parsed.netloc))

会输出这个:

'a': ['1', '3'], 'b': ['2']
['x', 'y']
example.com
93.184.216.34

【讨论】:

你能看看这个archive.ics.uci.edu/ml/machine-learning-databases/00327/…,它描述了我想从url中提取的特征。感谢您的帮助 urllib 肯定会帮我提取一些属性 这些是什么类型的功能?例如。列出的功能之一是“使用 IP 地址”。这应该是布尔值还是 netloc 的值,可能是“example.com”或“93.184.216.34”。 其实,看着archive.ics.uci.edu/ml/machine-learning-databases/00327/…,我发现它们似乎被编码为`(-1, 0, 1)。因此,看起来您可能必须通过各种测试自己生成该编码(例如,测试 netloc 是否为 ip)。除非原作者有代码来实现你可以使用的。看起来他们还检查了跟随 url 的行为以及 url 本身。 我不是机器学习方面的专家,但我也认为您可能需要小心将 (-1, 0, 1) 编码为三值逻辑,因为这可能意味着 -1 和1 是 0。从这些功能来看,情况并非如此。 one-hot-encoding 或确保它们被视为分类可能是明智的。

以上是关于如何从python中的URL中提取特征?的主要内容,如果未能解决你的问题,请参考以下文章

如何从 Swift 中的 BLE 外设特征写入回调中提取数据?

如何从 Python 中的 URL 读取图像数据?

正则表达式使用 Python 从 HTML 中的 href 属性中提取 URL [重复]

如何从文本中提取 COMPLAINT 特征,以便对非投诉文本中的投诉进行分类

了解python scikit-learn中的文本特征提取TfidfVectorizer

如何在 Python 中提取以下频域特征?