diff --git a/README.md b/README.md index f746e56..bf37703 100644 --- a/README.md +++ b/README.md @@ -1,29 +1,377 @@ -# Project 2 -Select one of the following two options: +# Project 2 - Boosting Trees : +Implementing the gradient-boosting tree algorithm (with the usual fit-predict interface) -## Boosting Trees +Submitted by The Boosted Bandits: +1. Anushka Sarath - A20576979 +2. B P Gayathri Ananya - A20588605 +3. Gladys Gince Skariah - A20576603 -Implement the gradient-boosting tree algorithm (with the usual fit-predict interface) as described in Sections 10.9-10.10 of Elements of Statistical Learning (2nd Edition). Answer the questions below as you did for Project 1. +All the team members collaborated equally to implement the project. -Put your README below. Answer the following questions. +## 1. Introduction -* What does the model you have implemented do and when should it be used? -* How did you test your model to determine if it is working reasonably correctly? -* What parameters have you exposed to users of your implementation in order to tune performance? (Also perhaps provide some basic usage examples.) -* Are there specific inputs that your implementation has trouble with? Given more time, could you work around these or is it fundamental? +What does the model you have implemented do and when should it be used? -## Model Selection +### 1.1 Model description: +#### Ensemble methods +When predicting a target variable with any machine learning method, we aim to minimize the primary sources of difference between actual and predicted values, which are noise, variance, and bias and *Ensemble methods* help reduce variance and bias. +An ensemble is essentially a collection of models that combine their predictions (e.g., by taking the mean) to produce a final output. The benefit of using ensembles is that multiple models focused on the same target variable tend to outperform any single predictor. Ensemble techniques are divided into *Bagging* and *Boosting*. +In Boosting, predictors are built sequentially rather than independently. Boosting works by having each new predictor learn from the mistakes of the previous ones. As a result, observations with higher errors in earlier models are more likely to be emphasized in subsequent models, allowing the algorithm to better correct its errors. However, it’s important to carefully select a stopping criterion to avoid overfitting on the training data. +Gradient boosting is a boosting model technique for regression and classification problems. It produces a prediction model in the form of an ensemble of weak prediction models, typically *decision trees*. -Implement generic k-fold cross-validation and bootstrapping model selection methods. +#### Decision trees +A decision tree is a flowchart-like structure used to make decisions or predictions. It consists of nodes representing decisions or tests on attributes, branches representing the outcome of these decisions, and leaf nodes representing final outcomes or predictions. Each internal node corresponds to a test on an attribute, each branch corresponds to the result of the test, and each leaf node corresponds to a class label or a continuous value. +T +##### The process of creating a decision tree involves: +- Selecting the Best Attribute: Using a metric like Gini impurity, entropy, variance reduction or information gain, the best attribute to split the data is selected. +- Splitting the Dataset: The dataset is split into subsets based on the selected attribute. +- Repeating the Process: The process is repeated recursively for each subset, creating a new internal node or leaf node until a stopping criterion is met. -In your README, answer the following questions: +##### Metrics for splitting - +To decide which feature to be considered as the root node and which feature should be the next decision node and so on, information gain of each feature is used. The feature which has maximum information gain will be considered as the root node. -* Do your cross-validation and bootstrapping model selectors agree with a simpler model selector like AIC in simple cases (like linear regression)? -* In what cases might the methods you've written fail or give incorrect or undesirable results? -* What could you implement given more time to mitigate these cases or help users of your methods? -* What parameters have you exposed to your users in order to use your model selectors. +__Information gain for regression__: +For regression, information gain is based on the reduction in variance. A split is preferred if it significantly reduces the variance, as this means the target values are more predictable. -See sections 7.10-7.11 of Elements of Statistical Learning and the lecture notes. Pay particular attention to Section 7.10.2. +![Information_Gain_Regression](./images/Information_Gain_regression.jpg) -As usual, above-and-beyond efforts will be considered for bonus points. +where +- Variance(Parent): Variance of the target variable in the parent node. +- Variance(Child): Variance of the target variable in the ith child node +- N(i) and N: Number of samples in the ith child and parent, respectively + +__Variance__: +To calulate the variance we are using numpy.var() function. It measures the spread of data around its mean. Its formula is: + +![Variance](./images/variance.jpg) + +where +- y(i) represents individual data points. +- yhat - mean of y +- N is the number of data points + +__Information gain for classification__: +For classification, information gain is calculated using entropy: + +![Information_Gain_Classification](./images/Information_gain_classification.jpg) + +where +- H(Parent): Entropy of the parent node. +- H(Child): Entropy the ith child node + +__Entropy__: Entropy is a measure of disorder or impurity in the given dataset. It is calculated as + +![Entropy_formula](./images/entropy.jpg) + +where +p(X) is the number of times the class X has occured in that node divided by the total number of nodes + +![p(x)](./images/p(x).jpg) + +Entropy values can fall between 0 and 1. If all samples in data set, belong to one class, then entropy will equal zero. If half of the samples are classified as one class and the other half are in another class, entropy will be at its highest at 1. In order to select the *best feature* to split on and find the *optimal decision tree*, the *attribute with the smallest amount of entropy is used*. + +#### Gradient Boosting +- Gradient Boosting is a machine learning algorithm that builds an ensemble of decision trees in a sequential manner. Each tree corrects the errors of its predecessors, and the model combines them to make predictions. It is particularly effective for regression and classification tasks by minimizing a chosen loss function. +- Decision trees, typically shallow (with limited depth), are used as weak learners in Gradient Boosting. These trees focus on learning patterns in the residuals/errors from previous iterations. +- Each tree improves upon the previous ones by focusing on the hardest-to-predict examples. +- The ensemble of trees produces strong predictions by combining their outputs. +- This iterative error-correction process allows Gradient Boosting to create a accurate predictive model. +- when to use gradient boosting + * Nonlinear Relationships: It captures complex patterns and interactions between features. + * Noisy or Medium-sized Datasets: Works well with moderately large datasets where interpretability is less of a concern. + * Feature Importance: Gradient Boosting can provide insights into feature importance in the dataset. + + +### 1.2 Implementation + +#### Class created: +- __Node__ : This class represents a single node in the decision tree, used to define splits in the data or hold values for leaf nodes. +- __DecisionTree__ : This class implements a decision tree used in the gradient boosting algorithm to predict residuals at each stage. +- __GradientBoostingRegressor__ : This class implements a gradient boosting regressor for regression tasks, using a sequence of decision trees to fit residuals and improve predictions iteratively. + +#### Functions created within the class Node + +1. __init__ +- Initialize a tree node with the necessary attributes for splitting or prediction. +- Parameters: + - feature: The index of the feature used for splitting at this node. + - threshold: The value used to split the data. + - left, right: The child nodes of this node (left for data less than or equal to threshold, right for data greater than threshold). + - value: The value stored at a leaf node (used if this node is a leaf). + +2. __is_leaf_node()__ +- Returns True if the node is a leaf node, meaning it holds a value and does not have children. + +#### Functions created within the class DecisionTree + +1. __init__ +- Initializes the required parameters +- Parameters: + - min_samples_split: The minimum number of samples required to split a node. + - max_depth: The maximum depth of the tree. + - n_features: The number of features to consider when looking for the best split. + +2. __fit()__ +- its the decision tree to the input data by growing it based on the features and target labels. +- Parameters: + - X: Feature matrix (2D array) where rows are samples and columns are features. + - y: Target values (1D array). + +3. __grow_tree()__ +- Recursively builds the decision tree, creating splits until stopping criteria are met.If the maximum depth is reached or if all labels are the same (pure node) or if the number of samples is less than the min_samples_split then the node becomes a leaf node and it's value is set to the most common label in y which is the mean of y +- Parameters: + - X: Feature matrix of the current subset. + - y: Target values of the current subset. + - depth: Current depth of the tree. + +4. __best_split()__ +- Finds the optimal feature and threshold for splitting based on information gain. +- Parameters: + - X: Feature matrix. + - y: Target values. + - feat_idxs: Indices of features to consider for splitting. +- Returns: split_idx (indices of the best feature) and split_threshold (float) for the best split. + +5. __information_gain()__ +- Calculates the reduction in variance for a potential split, helping choose the best split point. +- Parameters: + - y: Target values. + - X_column: Single feature column. + - threshold: Value used to split the feature. + +6. __split()__ +- Splits data indices into left and right based on whether they meet a threshold. +- `left_idxs`: Indices of samples where the features value <=threshold +- `right_idxs`: Indices of samples where the feature value > threshold. +- Parameters: + - X_column: A column of feature values. + - threshold: Threshold value for splitting. +- Returns: left_idxs and right_idxs of indices. + + +7. __most_common_label()__ +- Returns the mean value of labels, used to predict in regression tasks. +- Parameters: + - y: Target labels at a leaf node. +- Returns: Mean value of y. + +8. __predict()__ +- Predicts target values for each sample in the input data. +- Parameters: + - X: Feature matrix of samples to predict. +- Returns: Array of predictions. + +9. __traverse_tree()__ +- Traverses the tree to generate a prediction for a single sample. +- Parameters: + - x: Single data sample. + - node: Current node in the tree traversal. +- Returns: Predicted value at a leaf node. + +#### Functions used in GradientBoostingRegressor + +1. __init()__ +Initializes required Parameters +- n_estimators: (int, default=100) Number of decision trees in the model. +- learning_rate: (float, default=0.1) Shrinks the contribution of each tree. +- max_depth: (int, default=3) Maximum depth of each decision tree. +- min_samples_split: (int, default=2) Minimum samples required to split a node + +2. __fit()__ +- Trains the gradient boosting model by iteratively fitting trees on residuals to minimize errors. +- Parameters: + - X: (ndarray) Feature data for training. + - y: (ndarray) Target labels for training. +- Returns: None. + +3. __predit()__ +- Predicts target values for each sample in the input data by combining predictions from all trees. +- Parameters: + - X: (ndarray) Input data for which predictions are needed. +- Returns: Array of predicted values. + +#### Model evaluation parameters + +1. __MSE__ : +Measures the average squared difference between predicted and actual values. It is given by the formula: + +![MSE](./images/MSE.jpg) + +where y(i) is the actual value, y(i) hat is the predicted value and n is the number of observations. + +2. __R2 square__: +- Indicates the proportion of the variance in the dependent variable that is predictable from the independent variables. +- R² values range from 0 to 1, with values closer to 1 meaning that the model explains a large proportion of the variance in the data. An R² of 0 means the model explains none of the variance, while an R² of 1 means it explains all the variance. +- It is given by the formula + +![R2square](./images/R2square.jpg) + +where y(i) is the actual value, y(i) hat is the predicted value and y bar is the mean of observations. + +## 1.3 Steps to run the code + +### Activating the Virtual Environment + +1. **For Windows**: + - Navigate to the directory where the virtual environment is located: + ```bash + cd /path/to/your/project + ``` + - Activate the virtual environment: + ```bash + .\ml_env\Scripts\activate + ``` +2. **For macOS/Linux**: + - Navigate to the directory where the virtual environment is located: + ```bash + cd /path/to/your/project + ``` + - Activate the virtual environment: + ```bash + source ml_env/bin/activate + ``` +Once the environment is activated, you can proceed to install the necessary dependencies and run the scripts. + +### Running the Test Files + +* **To test using theLaptop Prices dataset:** + ```bash + python -m tests.test_gradient_boosting_laptops + +* **To test using the Netflix Stock Prediction dataset:** + ```bash + python -m tests.test_netflix_regressor + +* **To test using the Random dataset:** + ```bash + python -m tests.test_random_regression + +## 2. Testing +How did you test your model to determine if it is working reasonably correctly? + +### 2.1 Test case 0: +Validating all the input variables to see if they have the expected values before we fit the model. + +1. min_samples_split must be at least 2: + +![err1](./images/err1.jpg) + +2. max_depth must be a positive integer. + +![err2](./images/err2.jpg) + +3. X and y must be NumPy arrays. + +![err3](./images/err3.jpg) + +__Errors for GradientBoostingRegressor__ + +4. n_estimators must be a positive integer. + +![err8](./images/err8.jpg) + +5. learning_rate must be in the range (0, 1). + +![err9](./images/err9.jpg) + +6. max_depth must be a positive integer. + +![err10](./images/err10.jpg) + +7. X and y must have the same number of samples. + +![err12](./images/err10.jpg) + +8. min_samples_split must be at least 2. + +![err11](./images/err10.jpg) + +### 2.2 Test case 1: +__test_random_regression.csv__ +1. Dataset Overview: A synthetic regression dataset is generated with features and a linear relationship to the target variable, making it ideal for testing the performance of regression models under controlled conditions. The dataset consists of: + - Number of Samples: 500 + - Number of Features: 5 + - Noise: Gaussian noise added to the target variable for realism. +2. Feature Engineering and Data Generation: The feature matrix (X) is randomly generated, and the target variable (y) is computed as a linear combination of features plus noise: + - Coefficients are randomly generated to define the relationship between features and target. + - Gaussian noise (noise=0.1) is added to simulate variability in real-world data. +3. Training the Gradient Boosting Regressor: The custom GradientBoostingRegressor is trained on the synthetic dataset. Key hyperparameters include: +4. Parameters set: + - n_estimators: 50 + - learning_rate: 0.1 + - max_depth: 3 +Evaluating Model Performance: +The model's performance evaluation: + +![random_result](./images/random_result.jpg) + + +### 2.3 Test case 2: +__laptop_prices.csv__ +1. Dataset Overview: The laptop price dataset includes features such as screen size (Inches), RAM, weight, CPU frequency, and storage capacities (PrimaryStorage and SecondaryStorage). The goal is to predict the laptop's price (in euros) using these attributes. +2. Feature Engineering and Data Preprocessing: The dataset uses six key features: + - Inches: Screen size in inches. + - Ram: RAM size in GB. + - Weight: Laptop weight in kilograms. + - CPU_freq: CPU frequency in GHz. + - PrimaryStorage: Size of primary storage in GB. + - SecondaryStorage: Size of secondary storage in GB. + - The target variable is Price_euros. + - Features and target values are split into training and testing sets using an 80-20 ratio. +3. Training the Gradient Boosting Regressor: The custom GradientBoostingRegressor is trained to predict laptop prices. The model parameters include: +4. The trained model performance evaluation: + +![laptop_eval](./images/laptop_eval.jpg) + +5. Key Parameters: + - Number of Estimators (n_estimators): 50 + - Learning Rate: 0.1 + - Max Depth: 3 + +6. plot comparing the actual and predicted values: + +![laptop_price_plot](./images/laptop_price_plot.jpg) + +### 2.4 Test case 3: +__netflix.csv__ + +1. Dataset Overview: The Netflix dataset includes stock-related features such as Open, High, Low, and Close prices. The goal is to predict the next day's Close price based on these features. +2. Feature Engineering and Data Preprocessing: The dataset undergoes preprocessing steps, including handling missing values by dropping rows with NaN. The input features (X) are Open, High, and Low, while the target variable (y) is Close. +3. Training the Gradient Boosting Regressor: A custom GradientBoostingRegressor implementation is used for training. The model learns sequentially to reduce prediction errors using decision trees as base learners. +4. Evaluating Model Performance: +The model's performance evaluation: + +![netflix_result](./images/netflix_result.jpg) + +Results are computed for the test set and compared against the ground truth values. +5. Key Parameters: +Number of Estimators (n_estimators): 75 +Learning Rate: 0.2 +Max Depth: 3 +Minimum Samples Split: 2 + +6. The accuracy acheived with these parameter values for the dataset: + +![netflix_data_plot](./images/netflix_data_plot.jpg) + + +## 3. Parameters to tune performance: +What parameters have you exposed to users of your implementation in order to tune performance? (Also perhaps provide some basic usage examples.) + +The parameters available for the users which they can use to tune the performance are + +- n_estimators - default value set to +- learning rate - default value set to 0.1 +- max_depth - default value set to 3 +- min_samples_split - default value set to 2 + +## 4. Future scope +Are there specific inputs that your implementation has trouble with? Given more time, could you work around these or is it fundamental? + +- __Optimization for Faster Execution__: +Given more time, efforts could focus on optimizing the current implementation to reduce runtime. By optimizing algorithm parameters and employing efficient data structures, the model's training time can be minimized, making it more suitable for real-world applications where fast performance is crucial. +- __Versatile Model Design for Regression and Classification__: +Developing the algorithm as a flexible class that accommodates both regression and classification tasks would significantly enhance its versatility. This approach would allow the model to adapt to various problem types with minimal adjustments, making it a more robust and reusable tool. +- __Enhanced Data Cleaning and Preprocessing__: +With more resources allocated to data cleaning and feature engineering, the quality of input data can be improved, which would likely yield better model performance. This process might include handling outliers, refining feature selection, and scaling features effectively, leading to more accurate and reliable predictions. diff --git a/images/Information_Gain.jpg b/images/Information_Gain.jpg new file mode 100644 index 0000000..c22d347 Binary files /dev/null and b/images/Information_Gain.jpg differ diff --git a/images/Information_Gain_regression.jpg b/images/Information_Gain_regression.jpg new file mode 100644 index 0000000..ec31ed2 Binary files /dev/null and b/images/Information_Gain_regression.jpg differ diff --git a/images/Information_gain_classification.jpg b/images/Information_gain_classification.jpg new file mode 100644 index 0000000..3a8d18d Binary files /dev/null and b/images/Information_gain_classification.jpg differ diff --git a/images/MSE.jpg b/images/MSE.jpg new file mode 100644 index 0000000..1ef2445 Binary files /dev/null and b/images/MSE.jpg differ diff --git a/images/R2square.jpg b/images/R2square.jpg new file mode 100644 index 0000000..fd7fb7c Binary files /dev/null and b/images/R2square.jpg differ diff --git a/images/breast_cancer_g - Copy.jpg b/images/breast_cancer_g - Copy.jpg new file mode 100644 index 0000000..adf561c Binary files /dev/null and b/images/breast_cancer_g - Copy.jpg differ diff --git a/images/breast_cancer_g.jpg b/images/breast_cancer_g.jpg new file mode 100644 index 0000000..adf561c Binary files /dev/null and b/images/breast_cancer_g.jpg differ diff --git a/images/entropy.jpg b/images/entropy.jpg new file mode 100644 index 0000000..ded6706 Binary files /dev/null and b/images/entropy.jpg differ diff --git a/images/err1.jpg b/images/err1.jpg new file mode 100644 index 0000000..bdd775b Binary files /dev/null and b/images/err1.jpg differ diff --git a/images/err10.jpg b/images/err10.jpg new file mode 100644 index 0000000..bb7da8b Binary files /dev/null and b/images/err10.jpg differ diff --git a/images/err11.jpg b/images/err11.jpg new file mode 100644 index 0000000..6d2fb7c Binary files /dev/null and b/images/err11.jpg differ diff --git a/images/err12.jpg b/images/err12.jpg new file mode 100644 index 0000000..fb65e72 Binary files /dev/null and b/images/err12.jpg differ diff --git a/images/err13.jpg b/images/err13.jpg new file mode 100644 index 0000000..d8bc765 Binary files /dev/null and b/images/err13.jpg differ diff --git a/images/err14.jpg b/images/err14.jpg new file mode 100644 index 0000000..5132eb5 Binary files /dev/null and b/images/err14.jpg differ diff --git a/images/err2.jpg b/images/err2.jpg new file mode 100644 index 0000000..a51a725 Binary files /dev/null and b/images/err2.jpg differ diff --git a/images/err3.jpg b/images/err3.jpg new file mode 100644 index 0000000..1dfd2cd Binary files /dev/null and b/images/err3.jpg differ diff --git a/images/err4.jpg b/images/err4.jpg new file mode 100644 index 0000000..945a668 Binary files /dev/null and b/images/err4.jpg differ diff --git a/images/err5.jpg b/images/err5.jpg new file mode 100644 index 0000000..079360c Binary files /dev/null and b/images/err5.jpg differ diff --git a/images/err6.jpg b/images/err6.jpg new file mode 100644 index 0000000..cc0f4b8 Binary files /dev/null and b/images/err6.jpg differ diff --git a/images/err7.jpg b/images/err7.jpg new file mode 100644 index 0000000..b3858d3 Binary files /dev/null and b/images/err7.jpg differ diff --git a/images/err8.jpg b/images/err8.jpg new file mode 100644 index 0000000..9f4b1e1 Binary files /dev/null and b/images/err8.jpg differ diff --git a/images/err9.jpg b/images/err9.jpg new file mode 100644 index 0000000..6e60d99 Binary files /dev/null and b/images/err9.jpg differ diff --git a/images/laptop_eval.jpg b/images/laptop_eval.jpg new file mode 100644 index 0000000..711431e Binary files /dev/null and b/images/laptop_eval.jpg differ diff --git a/images/laptop_price_plot.jpg b/images/laptop_price_plot.jpg new file mode 100644 index 0000000..6e46ea4 Binary files /dev/null and b/images/laptop_price_plot.jpg differ diff --git a/images/netflix_data_plot.jpg b/images/netflix_data_plot.jpg new file mode 100644 index 0000000..c6704df Binary files /dev/null and b/images/netflix_data_plot.jpg differ diff --git a/images/netflix_result.jpg b/images/netflix_result.jpg new file mode 100644 index 0000000..f2e8ee1 Binary files /dev/null and b/images/netflix_result.jpg differ diff --git a/images/p(x).jpg b/images/p(x).jpg new file mode 100644 index 0000000..367e14f Binary files /dev/null and b/images/p(x).jpg differ diff --git a/images/random_dataset.jpg b/images/random_dataset.jpg new file mode 100644 index 0000000..ba0b43f Binary files /dev/null and b/images/random_dataset.jpg differ diff --git a/images/random_result.jpg b/images/random_result.jpg new file mode 100644 index 0000000..ba0b43f Binary files /dev/null and b/images/random_result.jpg differ diff --git a/images/test.png b/images/test.png new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/images/test.png @@ -0,0 +1 @@ + diff --git a/images/variance.jpg b/images/variance.jpg new file mode 100644 index 0000000..91e61ea Binary files /dev/null and b/images/variance.jpg differ diff --git a/ml_env/Scripts/Activate.ps1 b/ml_env/Scripts/Activate.ps1 new file mode 100644 index 0000000..a3bc6fb --- /dev/null +++ b/ml_env/Scripts/Activate.ps1 @@ -0,0 +1,241 @@ +<# +.Synopsis +Activate a Python virtual environment for the current PowerShell session. + +.Description +Pushes the python executable for a virtual environment to the front of the +$Env:PATH environment variable and sets the prompt to signify that you are +in a Python virtual environment. Makes use of the command line switches as +well as the `pyvenv.cfg` file values present in the virtual environment. + +.Parameter VenvDir +Path to the directory that contains the virtual environment to activate. The +default value for this is the parent of the directory that the Activate.ps1 +script is located within. + +.Parameter Prompt +The prompt prefix to display when this virtual environment is activated. By +default, this prompt is the name of the virtual environment folder (VenvDir) +surrounded by parentheses and followed by a single space (ie. '(.venv) '). + +.Example +Activate.ps1 +Activates the Python virtual environment that contains the Activate.ps1 script. + +.Example +Activate.ps1 -Verbose +Activates the Python virtual environment that contains the Activate.ps1 script, +and shows extra information about the activation as it executes. + +.Example +Activate.ps1 -VenvDir C:\Users\MyUser\Common\.venv +Activates the Python virtual environment located in the specified location. + +.Example +Activate.ps1 -Prompt "MyPython" +Activates the Python virtual environment that contains the Activate.ps1 script, +and prefixes the current prompt with the specified string (surrounded in +parentheses) while the virtual environment is active. + +.Notes +On Windows, it may be required to enable this Activate.ps1 script by setting the +execution policy for the user. You can do this by issuing the following PowerShell +command: + +PS C:\> Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser + +For more information on Execution Policies: +https://go.microsoft.com/fwlink/?LinkID=135170 + +#> +Param( + [Parameter(Mandatory = $false)] + [String] + $VenvDir, + [Parameter(Mandatory = $false)] + [String] + $Prompt +) + +<# Function declarations --------------------------------------------------- #> + +<# +.Synopsis +Remove all shell session elements added by the Activate script, including the +addition of the virtual environment's Python executable from the beginning of +the PATH variable. + +.Parameter NonDestructive +If present, do not remove this function from the global namespace for the +session. + +#> +function global:deactivate ([switch]$NonDestructive) { + # Revert to original values + + # The prior prompt: + if (Test-Path -Path Function:_OLD_VIRTUAL_PROMPT) { + Copy-Item -Path Function:_OLD_VIRTUAL_PROMPT -Destination Function:prompt + Remove-Item -Path Function:_OLD_VIRTUAL_PROMPT + } + + # The prior PYTHONHOME: + if (Test-Path -Path Env:_OLD_VIRTUAL_PYTHONHOME) { + Copy-Item -Path Env:_OLD_VIRTUAL_PYTHONHOME -Destination Env:PYTHONHOME + Remove-Item -Path Env:_OLD_VIRTUAL_PYTHONHOME + } + + # The prior PATH: + if (Test-Path -Path Env:_OLD_VIRTUAL_PATH) { + Copy-Item -Path Env:_OLD_VIRTUAL_PATH -Destination Env:PATH + Remove-Item -Path Env:_OLD_VIRTUAL_PATH + } + + # Just remove the VIRTUAL_ENV altogether: + if (Test-Path -Path Env:VIRTUAL_ENV) { + Remove-Item -Path env:VIRTUAL_ENV + } + + # Just remove the _PYTHON_VENV_PROMPT_PREFIX altogether: + if (Get-Variable -Name "_PYTHON_VENV_PROMPT_PREFIX" -ErrorAction SilentlyContinue) { + Remove-Variable -Name _PYTHON_VENV_PROMPT_PREFIX -Scope Global -Force + } + + # Leave deactivate function in the global namespace if requested: + if (-not $NonDestructive) { + Remove-Item -Path function:deactivate + } +} + +<# +.Description +Get-PyVenvConfig parses the values from the pyvenv.cfg file located in the +given folder, and returns them in a map. + +For each line in the pyvenv.cfg file, if that line can be parsed into exactly +two strings separated by `=` (with any amount of whitespace surrounding the =) +then it is considered a `key = value` line. The left hand string is the key, +the right hand is the value. + +If the value starts with a `'` or a `"` then the first and last character is +stripped from the value before being captured. + +.Parameter ConfigDir +Path to the directory that contains the `pyvenv.cfg` file. +#> +function Get-PyVenvConfig( + [String] + $ConfigDir +) { + Write-Verbose "Given ConfigDir=$ConfigDir, obtain values in pyvenv.cfg" + + # Ensure the file exists, and issue a warning if it doesn't (but still allow the function to continue). + $pyvenvConfigPath = Join-Path -Resolve -Path $ConfigDir -ChildPath 'pyvenv.cfg' -ErrorAction Continue + + # An empty map will be returned if no config file is found. + $pyvenvConfig = @{ } + + if ($pyvenvConfigPath) { + + Write-Verbose "File exists, parse `key = value` lines" + $pyvenvConfigContent = Get-Content -Path $pyvenvConfigPath + + $pyvenvConfigContent | ForEach-Object { + $keyval = $PSItem -split "\s*=\s*", 2 + if ($keyval[0] -and $keyval[1]) { + $val = $keyval[1] + + # Remove extraneous quotations around a string value. + if ("'""".Contains($val.Substring(0, 1))) { + $val = $val.Substring(1, $val.Length - 2) + } + + $pyvenvConfig[$keyval[0]] = $val + Write-Verbose "Adding Key: '$($keyval[0])'='$val'" + } + } + } + return $pyvenvConfig +} + + +<# Begin Activate script --------------------------------------------------- #> + +# Determine the containing directory of this script +$VenvExecPath = Split-Path -Parent $MyInvocation.MyCommand.Definition +$VenvExecDir = Get-Item -Path $VenvExecPath + +Write-Verbose "Activation script is located in path: '$VenvExecPath'" +Write-Verbose "VenvExecDir Fullname: '$($VenvExecDir.FullName)" +Write-Verbose "VenvExecDir Name: '$($VenvExecDir.Name)" + +# Set values required in priority: CmdLine, ConfigFile, Default +# First, get the location of the virtual environment, it might not be +# VenvExecDir if specified on the command line. +if ($VenvDir) { + Write-Verbose "VenvDir given as parameter, using '$VenvDir' to determine values" +} +else { + Write-Verbose "VenvDir not given as a parameter, using parent directory name as VenvDir." + $VenvDir = $VenvExecDir.Parent.FullName.TrimEnd("\\/") + Write-Verbose "VenvDir=$VenvDir" +} + +# Next, read the `pyvenv.cfg` file to determine any required value such +# as `prompt`. +$pyvenvCfg = Get-PyVenvConfig -ConfigDir $VenvDir + +# Next, set the prompt from the command line, or the config file, or +# just use the name of the virtual environment folder. +if ($Prompt) { + Write-Verbose "Prompt specified as argument, using '$Prompt'" +} +else { + Write-Verbose "Prompt not specified as argument to script, checking pyvenv.cfg value" + if ($pyvenvCfg -and $pyvenvCfg['prompt']) { + Write-Verbose " Setting based on value in pyvenv.cfg='$($pyvenvCfg['prompt'])'" + $Prompt = $pyvenvCfg['prompt']; + } + else { + Write-Verbose " Setting prompt based on parent's directory's name. (Is the directory name passed to venv module when creating the virutal environment)" + Write-Verbose " Got leaf-name of $VenvDir='$(Split-Path -Path $venvDir -Leaf)'" + $Prompt = Split-Path -Path $venvDir -Leaf + } +} + +Write-Verbose "Prompt = '$Prompt'" +Write-Verbose "VenvDir='$VenvDir'" + +# Deactivate any currently active virtual environment, but leave the +# deactivate function in place. +deactivate -nondestructive + +# Now set the environment variable VIRTUAL_ENV, used by many tools to determine +# that there is an activated venv. +$env:VIRTUAL_ENV = $VenvDir + +if (-not $Env:VIRTUAL_ENV_DISABLE_PROMPT) { + + Write-Verbose "Setting prompt to '$Prompt'" + + # Set the prompt to include the env name + # Make sure _OLD_VIRTUAL_PROMPT is global + function global:_OLD_VIRTUAL_PROMPT { "" } + Copy-Item -Path function:prompt -Destination function:_OLD_VIRTUAL_PROMPT + New-Variable -Name _PYTHON_VENV_PROMPT_PREFIX -Description "Python virtual environment prompt prefix" -Scope Global -Option ReadOnly -Visibility Public -Value $Prompt + + function global:prompt { + Write-Host -NoNewline -ForegroundColor Green "($_PYTHON_VENV_PROMPT_PREFIX) " + _OLD_VIRTUAL_PROMPT + } +} + +# Clear PYTHONHOME +if (Test-Path -Path Env:PYTHONHOME) { + Copy-Item -Path Env:PYTHONHOME -Destination Env:_OLD_VIRTUAL_PYTHONHOME + Remove-Item -Path Env:PYTHONHOME +} + +# Add the venv to the PATH +Copy-Item -Path Env:PATH -Destination Env:_OLD_VIRTUAL_PATH +$Env:PATH = "$VenvExecDir$([System.IO.Path]::PathSeparator)$Env:PATH" diff --git a/ml_env/Scripts/activate b/ml_env/Scripts/activate new file mode 100644 index 0000000..5c98d8e --- /dev/null +++ b/ml_env/Scripts/activate @@ -0,0 +1,66 @@ +# This file must be used with "source bin/activate" *from bash* +# you cannot run it directly + +deactivate () { + # reset old environment variables + if [ -n "${_OLD_VIRTUAL_PATH:-}" ] ; then + PATH="${_OLD_VIRTUAL_PATH:-}" + export PATH + unset _OLD_VIRTUAL_PATH + fi + if [ -n "${_OLD_VIRTUAL_PYTHONHOME:-}" ] ; then + PYTHONHOME="${_OLD_VIRTUAL_PYTHONHOME:-}" + export PYTHONHOME + unset _OLD_VIRTUAL_PYTHONHOME + fi + + # This should detect bash and zsh, which have a hash command that must + # be called to get it to forget past commands. Without forgetting + # past commands the $PATH changes we made may not be respected + if [ -n "${BASH:-}" -o -n "${ZSH_VERSION:-}" ] ; then + hash -r 2> /dev/null + fi + + if [ -n "${_OLD_VIRTUAL_PS1:-}" ] ; then + PS1="${_OLD_VIRTUAL_PS1:-}" + export PS1 + unset _OLD_VIRTUAL_PS1 + fi + + unset VIRTUAL_ENV + if [ ! "${1:-}" = "nondestructive" ] ; then + # Self destruct! + unset -f deactivate + fi +} + +# unset irrelevant variables +deactivate nondestructive + +VIRTUAL_ENV="D:\ML_Project2\ml_env" +export VIRTUAL_ENV + +_OLD_VIRTUAL_PATH="$PATH" +PATH="$VIRTUAL_ENV/Scripts:$PATH" +export PATH + +# unset PYTHONHOME if set +# this will fail if PYTHONHOME is set to the empty string (which is bad anyway) +# could use `if (set -u; : $PYTHONHOME) ;` in bash +if [ -n "${PYTHONHOME:-}" ] ; then + _OLD_VIRTUAL_PYTHONHOME="${PYTHONHOME:-}" + unset PYTHONHOME +fi + +if [ -z "${VIRTUAL_ENV_DISABLE_PROMPT:-}" ] ; then + _OLD_VIRTUAL_PS1="${PS1:-}" + PS1="(ml_env) ${PS1:-}" + export PS1 +fi + +# This should detect bash and zsh, which have a hash command that must +# be called to get it to forget past commands. Without forgetting +# past commands the $PATH changes we made may not be respected +if [ -n "${BASH:-}" -o -n "${ZSH_VERSION:-}" ] ; then + hash -r 2> /dev/null +fi diff --git a/ml_env/Scripts/activate.bat b/ml_env/Scripts/activate.bat new file mode 100644 index 0000000..c752146 --- /dev/null +++ b/ml_env/Scripts/activate.bat @@ -0,0 +1,33 @@ +@echo off + +rem This file is UTF-8 encoded, so we need to update the current code page while executing it +for /f "tokens=2 delims=:." %%a in ('"%SystemRoot%\System32\chcp.com"') do ( + set _OLD_CODEPAGE=%%a +) +if defined _OLD_CODEPAGE ( + "%SystemRoot%\System32\chcp.com" 65001 > nul +) + +set VIRTUAL_ENV=D:\ML_Project2\ml_env + +if not defined PROMPT set PROMPT=$P$G + +if defined _OLD_VIRTUAL_PROMPT set PROMPT=%_OLD_VIRTUAL_PROMPT% +if defined _OLD_VIRTUAL_PYTHONHOME set PYTHONHOME=%_OLD_VIRTUAL_PYTHONHOME% + +set _OLD_VIRTUAL_PROMPT=%PROMPT% +set PROMPT=(ml_env) %PROMPT% + +if defined PYTHONHOME set _OLD_VIRTUAL_PYTHONHOME=%PYTHONHOME% +set PYTHONHOME= + +if defined _OLD_VIRTUAL_PATH set PATH=%_OLD_VIRTUAL_PATH% +if not defined _OLD_VIRTUAL_PATH set _OLD_VIRTUAL_PATH=%PATH% + +set PATH=%VIRTUAL_ENV%\Scripts;%PATH% + +:END +if defined _OLD_CODEPAGE ( + "%SystemRoot%\System32\chcp.com" %_OLD_CODEPAGE% > nul + set _OLD_CODEPAGE= +) diff --git a/ml_env/Scripts/deactivate.bat b/ml_env/Scripts/deactivate.bat new file mode 100644 index 0000000..1205c61 --- /dev/null +++ b/ml_env/Scripts/deactivate.bat @@ -0,0 +1,21 @@ +@echo off + +if defined _OLD_VIRTUAL_PROMPT ( + set "PROMPT=%_OLD_VIRTUAL_PROMPT%" +) +set _OLD_VIRTUAL_PROMPT= + +if defined _OLD_VIRTUAL_PYTHONHOME ( + set "PYTHONHOME=%_OLD_VIRTUAL_PYTHONHOME%" + set _OLD_VIRTUAL_PYTHONHOME= +) + +if defined _OLD_VIRTUAL_PATH ( + set "PATH=%_OLD_VIRTUAL_PATH%" +) + +set _OLD_VIRTUAL_PATH= + +set VIRTUAL_ENV= + +:END diff --git a/ml_env/Scripts/debugpy.exe b/ml_env/Scripts/debugpy.exe new file mode 100644 index 0000000..83d6505 Binary files /dev/null and b/ml_env/Scripts/debugpy.exe differ diff --git a/ml_env/Scripts/f2py.exe b/ml_env/Scripts/f2py.exe new file mode 100644 index 0000000..da6bfcb Binary files /dev/null and b/ml_env/Scripts/f2py.exe differ diff --git a/ml_env/Scripts/fonttools.exe b/ml_env/Scripts/fonttools.exe new file mode 100644 index 0000000..f1bdcfa Binary files /dev/null and b/ml_env/Scripts/fonttools.exe differ diff --git a/ml_env/Scripts/ipython.exe b/ml_env/Scripts/ipython.exe new file mode 100644 index 0000000..b0b4b54 Binary files /dev/null and b/ml_env/Scripts/ipython.exe differ diff --git a/ml_env/Scripts/ipython3.exe b/ml_env/Scripts/ipython3.exe new file mode 100644 index 0000000..b0b4b54 Binary files /dev/null and b/ml_env/Scripts/ipython3.exe differ diff --git a/ml_env/Scripts/jupyter-kernel.exe b/ml_env/Scripts/jupyter-kernel.exe new file mode 100644 index 0000000..6af93ac Binary files /dev/null and b/ml_env/Scripts/jupyter-kernel.exe differ diff --git a/ml_env/Scripts/jupyter-kernelspec.exe b/ml_env/Scripts/jupyter-kernelspec.exe new file mode 100644 index 0000000..d13480c Binary files /dev/null and b/ml_env/Scripts/jupyter-kernelspec.exe differ diff --git a/ml_env/Scripts/jupyter-migrate.exe b/ml_env/Scripts/jupyter-migrate.exe new file mode 100644 index 0000000..f708075 Binary files /dev/null and b/ml_env/Scripts/jupyter-migrate.exe differ diff --git a/ml_env/Scripts/jupyter-run.exe b/ml_env/Scripts/jupyter-run.exe new file mode 100644 index 0000000..8d54508 Binary files /dev/null and b/ml_env/Scripts/jupyter-run.exe differ diff --git a/ml_env/Scripts/jupyter-troubleshoot.exe b/ml_env/Scripts/jupyter-troubleshoot.exe new file mode 100644 index 0000000..279a36b Binary files /dev/null and b/ml_env/Scripts/jupyter-troubleshoot.exe differ diff --git a/ml_env/Scripts/jupyter.exe b/ml_env/Scripts/jupyter.exe new file mode 100644 index 0000000..f9b7535 Binary files /dev/null and b/ml_env/Scripts/jupyter.exe differ diff --git a/ml_env/Scripts/numpy-config.exe b/ml_env/Scripts/numpy-config.exe new file mode 100644 index 0000000..7e149d3 Binary files /dev/null and b/ml_env/Scripts/numpy-config.exe differ diff --git a/ml_env/Scripts/pip.exe b/ml_env/Scripts/pip.exe new file mode 100644 index 0000000..9c8fd68 Binary files /dev/null and b/ml_env/Scripts/pip.exe differ diff --git a/ml_env/Scripts/pip3.9.exe b/ml_env/Scripts/pip3.9.exe new file mode 100644 index 0000000..9c8fd68 Binary files /dev/null and b/ml_env/Scripts/pip3.9.exe differ diff --git a/ml_env/Scripts/pip3.exe b/ml_env/Scripts/pip3.exe new file mode 100644 index 0000000..9c8fd68 Binary files /dev/null and b/ml_env/Scripts/pip3.exe differ diff --git a/ml_env/Scripts/pyftmerge.exe b/ml_env/Scripts/pyftmerge.exe new file mode 100644 index 0000000..16f5290 Binary files /dev/null and b/ml_env/Scripts/pyftmerge.exe differ diff --git a/ml_env/Scripts/pyftsubset.exe b/ml_env/Scripts/pyftsubset.exe new file mode 100644 index 0000000..f3cd9a0 Binary files /dev/null and b/ml_env/Scripts/pyftsubset.exe differ diff --git a/ml_env/Scripts/pygmentize.exe b/ml_env/Scripts/pygmentize.exe new file mode 100644 index 0000000..014fbf5 Binary files /dev/null and b/ml_env/Scripts/pygmentize.exe differ diff --git a/ml_env/Scripts/python.exe b/ml_env/Scripts/python.exe new file mode 100644 index 0000000..63f115f Binary files /dev/null and b/ml_env/Scripts/python.exe differ diff --git a/ml_env/Scripts/pythonw.exe b/ml_env/Scripts/pythonw.exe new file mode 100644 index 0000000..7dd48cd Binary files /dev/null and b/ml_env/Scripts/pythonw.exe differ diff --git a/ml_env/Scripts/pywin32_postinstall.py b/ml_env/Scripts/pywin32_postinstall.py new file mode 100644 index 0000000..a9dd856 --- /dev/null +++ b/ml_env/Scripts/pywin32_postinstall.py @@ -0,0 +1,778 @@ +# postinstall script for pywin32 +# +# copies pywintypesXX.dll and pythoncomXX.dll into the system directory, +# and creates a pth file +import argparse +import glob +import os +import shutil +import sys +import sysconfig +import tempfile # Send output somewhere so it can be found if necessary... +import winreg + +tee_f = open(os.path.join(tempfile.gettempdir(), "pywin32_postinstall.log"), "w") + + +class Tee: + def __init__(self, file): + self.f = file + + def write(self, what): + if self.f is not None: + try: + self.f.write(what.replace("\n", "\r\n")) + except OSError: + pass + tee_f.write(what) + + def flush(self): + if self.f is not None: + try: + self.f.flush() + except OSError: + pass + tee_f.flush() + + +# For some unknown reason, when running under bdist_wininst we will start up +# with sys.stdout as None but stderr is hooked up. This work-around allows +# bdist_wininst to see the output we write and display it at the end of +# the install. +if sys.stdout is None: # pyright: ignore[reportUnnecessaryComparison] + sys.stdout = sys.stderr + +sys.stderr = Tee(sys.stderr) +sys.stdout = Tee(sys.stdout) + +com_modules = [ + # module_name, class_names + ("win32com.servers.interp", "Interpreter"), + ("win32com.servers.dictionary", "DictionaryPolicy"), + ("win32com.axscript.client.pyscript", "PyScript"), +] + +# Is this a 'silent' install - ie, avoid all dialogs. +# Different than 'verbose' +silent = 0 + +# Verbosity of output messages. +verbose = 1 + +root_key_name = "Software\\Python\\PythonCore\\" + sys.winver + +try: + # When this script is run from inside the bdist_wininst installer, + # file_created() and directory_created() are additional builtin + # functions which write lines to PythonXX\pywin32-install.log. This is + # a list of actions for the uninstaller, the format is inspired by what + # the Wise installer also creates. + file_created # type: ignore[used-before-def] + # 3.10 stopped supporting bdist_wininst, but we can still build them with 3.9. + # This can be kept until Python 3.9 or exe installers support is dropped. + is_bdist_wininst = True +except NameError: + is_bdist_wininst = False # we know what it is not - but not what it is :) + + def file_created(file): + pass + + def directory_created(directory): + pass + + def get_root_hkey(): + try: + winreg.OpenKey( + winreg.HKEY_LOCAL_MACHINE, root_key_name, 0, winreg.KEY_CREATE_SUB_KEY + ) + return winreg.HKEY_LOCAL_MACHINE + except OSError: + # Either not exist, or no permissions to create subkey means + # must be HKCU + return winreg.HKEY_CURRENT_USER + + +try: + create_shortcut # type: ignore[used-before-def] +except NameError: + # Create a function with the same signature as create_shortcut provided + # by bdist_wininst + def create_shortcut( + path, description, filename, arguments="", workdir="", iconpath="", iconindex=0 + ): + import pythoncom + from win32com.shell import shell + + ilink = pythoncom.CoCreateInstance( + shell.CLSID_ShellLink, + None, + pythoncom.CLSCTX_INPROC_SERVER, + shell.IID_IShellLink, + ) + ilink.SetPath(path) + ilink.SetDescription(description) + if arguments: + ilink.SetArguments(arguments) + if workdir: + ilink.SetWorkingDirectory(workdir) + if iconpath or iconindex: + ilink.SetIconLocation(iconpath, iconindex) + # now save it. + ipf = ilink.QueryInterface(pythoncom.IID_IPersistFile) + ipf.Save(filename, 0) + + # Support the same list of "path names" as bdist_wininst. + def get_special_folder_path(path_name): + from win32com.shell import shell, shellcon + + for maybe in """ + CSIDL_COMMON_STARTMENU CSIDL_STARTMENU CSIDL_COMMON_APPDATA + CSIDL_LOCAL_APPDATA CSIDL_APPDATA CSIDL_COMMON_DESKTOPDIRECTORY + CSIDL_DESKTOPDIRECTORY CSIDL_COMMON_STARTUP CSIDL_STARTUP + CSIDL_COMMON_PROGRAMS CSIDL_PROGRAMS CSIDL_PROGRAM_FILES_COMMON + CSIDL_PROGRAM_FILES CSIDL_FONTS""".split(): + if maybe == path_name: + csidl = getattr(shellcon, maybe) + return shell.SHGetSpecialFolderPath(0, csidl, False) + raise ValueError(f"{path_name} is an unknown path ID") + + +def CopyTo(desc, src, dest): + import win32api + import win32con + + while 1: + try: + win32api.CopyFile(src, dest, 0) + return + except win32api.error as details: + if details.winerror == 5: # access denied - user not admin. + raise + if silent: + # Running silent mode - just re-raise the error. + raise + full_desc = ( + f"Error {desc}\n\n" + "If you have any Python applications running, " + f"please close them now\nand select 'Retry'\n\n{details.strerror}" + ) + rc = win32api.MessageBox( + 0, full_desc, "Installation Error", win32con.MB_ABORTRETRYIGNORE + ) + if rc == win32con.IDABORT: + raise + elif rc == win32con.IDIGNORE: + return + # else retry - around we go again. + + +# We need to import win32api to determine the Windows system directory, +# so we can copy our system files there - but importing win32api will +# load the pywintypes.dll already in the system directory preventing us +# from updating them! +# So, we pull the same trick pywintypes.py does, but it loads from +# our pywintypes_system32 directory. +def LoadSystemModule(lib_dir, modname): + # See if this is a debug build. + import importlib.machinery + import importlib.util + + suffix = "_d" if "_d.pyd" in importlib.machinery.EXTENSION_SUFFIXES else "" + filename = "%s%d%d%s.dll" % ( + modname, + sys.version_info.major, + sys.version_info.minor, + suffix, + ) + filename = os.path.join(lib_dir, "pywin32_system32", filename) + loader = importlib.machinery.ExtensionFileLoader(modname, filename) + spec = importlib.machinery.ModuleSpec(name=modname, loader=loader, origin=filename) + mod = importlib.util.module_from_spec(spec) + loader.exec_module(mod) + + +def SetPyKeyVal(key_name, value_name, value): + root_hkey = get_root_hkey() + root_key = winreg.OpenKey(root_hkey, root_key_name) + try: + my_key = winreg.CreateKey(root_key, key_name) + try: + winreg.SetValueEx(my_key, value_name, 0, winreg.REG_SZ, value) + if verbose: + print(f"-> {root_key_name}\\{key_name}[{value_name}]={value!r}") + finally: + my_key.Close() + finally: + root_key.Close() + + +def UnsetPyKeyVal(key_name, value_name, delete_key=False): + root_hkey = get_root_hkey() + root_key = winreg.OpenKey(root_hkey, root_key_name) + try: + my_key = winreg.OpenKey(root_key, key_name, 0, winreg.KEY_SET_VALUE) + try: + winreg.DeleteValue(my_key, value_name) + if verbose: + print(f"-> DELETE {root_key_name}\\{key_name}[{value_name}]") + finally: + my_key.Close() + if delete_key: + winreg.DeleteKey(root_key, key_name) + if verbose: + print(f"-> DELETE {root_key_name}\\{key_name}") + except OSError as why: + winerror = getattr(why, "winerror", why.errno) + if winerror != 2: # file not found + raise + finally: + root_key.Close() + + +def RegisterCOMObjects(register=True): + import win32com.server.register + + if register: + func = win32com.server.register.RegisterClasses + else: + func = win32com.server.register.UnregisterClasses + flags = {} + if not verbose: + flags["quiet"] = 1 + for module, klass_name in com_modules: + __import__(module) + mod = sys.modules[module] + flags["finalize_register"] = getattr(mod, "DllRegisterServer", None) + flags["finalize_unregister"] = getattr(mod, "DllUnregisterServer", None) + klass = getattr(mod, klass_name) + func(klass, **flags) + + +def RegisterHelpFile(register=True, lib_dir=None): + if lib_dir is None: + lib_dir = sysconfig.get_paths()["platlib"] + if register: + # Register the .chm help file. + chm_file = os.path.join(lib_dir, "PyWin32.chm") + if os.path.isfile(chm_file): + # This isn't recursive, so if 'Help' doesn't exist, we croak + SetPyKeyVal("Help", None, None) + SetPyKeyVal("Help\\Pythonwin Reference", None, chm_file) + return chm_file + else: + print("NOTE: PyWin32.chm can not be located, so has not been registered") + else: + UnsetPyKeyVal("Help\\Pythonwin Reference", None, delete_key=True) + return None + + +def RegisterPythonwin(register=True, lib_dir=None): + """Add (or remove) Pythonwin to context menu for python scripts. + ??? Should probably also add Edit command for pys files also. + Also need to remove these keys on uninstall, but there's no function + like file_created to add registry entries to uninstall log ??? + """ + import os + + if lib_dir is None: + lib_dir = sysconfig.get_paths()["platlib"] + classes_root = get_root_hkey() + ## Installer executable doesn't seem to pass anything to postinstall script indicating if it's a debug build, + pythonwin_exe = os.path.join(lib_dir, "Pythonwin", "Pythonwin.exe") + pythonwin_edit_command = pythonwin_exe + ' -edit "%1"' + + keys_vals = [ + ( + "Software\\Microsoft\\Windows\\CurrentVersion\\App Paths\\Pythonwin.exe", + "", + pythonwin_exe, + ), + ( + "Software\\Classes\\Python.File\\shell\\Edit with Pythonwin", + "command", + pythonwin_edit_command, + ), + ( + "Software\\Classes\\Python.NoConFile\\shell\\Edit with Pythonwin", + "command", + pythonwin_edit_command, + ), + ] + + try: + if register: + for key, sub_key, val in keys_vals: + ## Since winreg only uses the character Api functions, this can fail if Python + ## is installed to a path containing non-ascii characters + hkey = winreg.CreateKey(classes_root, key) + if sub_key: + hkey = winreg.CreateKey(hkey, sub_key) + winreg.SetValueEx(hkey, None, 0, winreg.REG_SZ, val) + hkey.Close() + else: + for key, sub_key, val in keys_vals: + try: + if sub_key: + hkey = winreg.OpenKey(classes_root, key) + winreg.DeleteKey(hkey, sub_key) + hkey.Close() + winreg.DeleteKey(classes_root, key) + except OSError as why: + winerror = getattr(why, "winerror", why.errno) + if winerror != 2: # file not found + raise + finally: + # tell windows about the change + from win32com.shell import shell, shellcon + + shell.SHChangeNotify( + shellcon.SHCNE_ASSOCCHANGED, shellcon.SHCNF_IDLIST, None, None + ) + + +def get_shortcuts_folder(): + if get_root_hkey() == winreg.HKEY_LOCAL_MACHINE: + try: + fldr = get_special_folder_path("CSIDL_COMMON_PROGRAMS") + except OSError: + # No CSIDL_COMMON_PROGRAMS on this platform + fldr = get_special_folder_path("CSIDL_PROGRAMS") + else: + # non-admin install - always goes in this user's start menu. + fldr = get_special_folder_path("CSIDL_PROGRAMS") + + try: + install_group = winreg.QueryValue( + get_root_hkey(), root_key_name + "\\InstallPath\\InstallGroup" + ) + except OSError: + install_group = "Python %d.%d" % ( + sys.version_info.major, + sys.version_info.minor, + ) + return os.path.join(fldr, install_group) + + +# Get the system directory, which may be the Wow64 directory if we are a 32bit +# python on a 64bit OS. +def get_system_dir(): + import win32api # we assume this exists. + + try: + import pythoncom + import win32process + from win32com.shell import shell, shellcon + + try: + if win32process.IsWow64Process(): + return shell.SHGetSpecialFolderPath(0, shellcon.CSIDL_SYSTEMX86) + return shell.SHGetSpecialFolderPath(0, shellcon.CSIDL_SYSTEM) + except (pythoncom.com_error, win32process.error): + return win32api.GetSystemDirectory() + except ImportError: + return win32api.GetSystemDirectory() + + +def fixup_dbi(): + # We used to have a dbi.pyd with our .pyd files, but now have a .py file. + # If the user didn't uninstall, they will find the .pyd which will cause + # problems - so handle that. + import win32api + import win32con + + pyd_name = os.path.join(os.path.dirname(win32api.__file__), "dbi.pyd") + pyd_d_name = os.path.join(os.path.dirname(win32api.__file__), "dbi_d.pyd") + py_name = os.path.join(os.path.dirname(win32con.__file__), "dbi.py") + for this_pyd in (pyd_name, pyd_d_name): + this_dest = this_pyd + ".old" + if os.path.isfile(this_pyd) and os.path.isfile(py_name): + try: + if os.path.isfile(this_dest): + print( + f"Old dbi '{this_dest}' already exists - deleting '{this_pyd}'" + ) + os.remove(this_pyd) + else: + os.rename(this_pyd, this_dest) + print(f"renamed '{this_pyd}'->'{this_pyd}.old'") + file_created(this_pyd + ".old") + except OSError as exc: + print(f"FAILED to rename '{this_pyd}': {exc}") + + +def install(lib_dir): + import traceback + + # The .pth file is now installed as a regular file. + # Create the .pth file in the site-packages dir, and use only relative paths + # We used to write a .pth directly to sys.prefix - clobber it. + if os.path.isfile(os.path.join(sys.prefix, "pywin32.pth")): + os.unlink(os.path.join(sys.prefix, "pywin32.pth")) + # The .pth may be new and therefore not loaded in this session. + # Setup the paths just in case. + for name in "win32 win32\\lib Pythonwin".split(): + sys.path.append(os.path.join(lib_dir, name)) + # It is possible people with old versions installed with still have + # pywintypes and pythoncom registered. We no longer need this, and stale + # entries hurt us. + for name in "pythoncom pywintypes".split(): + keyname = "Software\\Python\\PythonCore\\" + sys.winver + "\\Modules\\" + name + for root in winreg.HKEY_LOCAL_MACHINE, winreg.HKEY_CURRENT_USER: + try: + winreg.DeleteKey(root, keyname + "\\Debug") + except OSError: + pass + try: + winreg.DeleteKey(root, keyname) + except OSError: + pass + LoadSystemModule(lib_dir, "pywintypes") + LoadSystemModule(lib_dir, "pythoncom") + import win32api + + # and now we can get the system directory: + files = glob.glob(os.path.join(lib_dir, "pywin32_system32\\*.*")) + if not files: + raise RuntimeError("No system files to copy!!") + # Try the system32 directory first - if that fails due to "access denied", + # it implies a non-admin user, and we use sys.prefix + for dest_dir in [get_system_dir(), sys.prefix]: + # and copy some files over there + worked = 0 + try: + for fname in files: + base = os.path.basename(fname) + dst = os.path.join(dest_dir, base) + CopyTo("installing %s" % base, fname, dst) + if verbose: + print(f"Copied {base} to {dst}") + # Register the files with the uninstaller + file_created(dst) + worked = 1 + # Nuke any other versions that may exist - having + # duplicates causes major headaches. + bad_dest_dirs = [ + os.path.join(sys.prefix, "Library\\bin"), + os.path.join(sys.prefix, "Lib\\site-packages\\win32"), + ] + if dest_dir != sys.prefix: + bad_dest_dirs.append(sys.prefix) + for bad_dest_dir in bad_dest_dirs: + bad_fname = os.path.join(bad_dest_dir, base) + if os.path.exists(bad_fname): + # let exceptions go here - delete must succeed + os.unlink(bad_fname) + if worked: + break + except win32api.error as details: + if details.winerror == 5: + # access denied - user not admin - try sys.prefix dir, + # but first check that a version doesn't already exist + # in that place - otherwise that one will still get used! + if os.path.exists(dst): + msg = ( + "The file '%s' exists, but can not be replaced " + "due to insufficient permissions. You must " + "reinstall this software as an Administrator" % dst + ) + print(msg) + raise RuntimeError(msg) + continue + raise + else: + raise RuntimeError( + "You don't have enough permissions to install the system files" + ) + + # Pythonwin 'compiles' config files - record them for uninstall. + pywin_dir = os.path.join(lib_dir, "Pythonwin", "pywin") + for fname in glob.glob(os.path.join(pywin_dir, "*.cfg")): + file_created(fname[:-1] + "c") # .cfg->.cfc + + # Register our demo COM objects. + try: + try: + RegisterCOMObjects() + except win32api.error as details: + if details.winerror != 5: # ERROR_ACCESS_DENIED + raise + print("You do not have the permissions to install COM objects.") + print("The sample COM objects were not registered.") + except Exception: + print("FAILED to register the Python COM objects") + traceback.print_exc() + + # There may be no main Python key in HKCU if, eg, an admin installed + # python itself. + winreg.CreateKey(get_root_hkey(), root_key_name) + + chm_file = None + try: + chm_file = RegisterHelpFile(True, lib_dir) + except Exception: + print("Failed to register help file") + traceback.print_exc() + else: + if verbose: + print("Registered help file") + + # misc other fixups. + fixup_dbi() + + # Register Pythonwin in context menu + try: + RegisterPythonwin(True, lib_dir) + except Exception: + print("Failed to register pythonwin as editor") + traceback.print_exc() + else: + if verbose: + print("Pythonwin has been registered in context menu") + + # Create the win32com\gen_py directory. + make_dir = os.path.join(lib_dir, "win32com", "gen_py") + if not os.path.isdir(make_dir): + if verbose: + print(f"Creating directory {make_dir}") + directory_created(make_dir) + os.mkdir(make_dir) + + try: + # create shortcuts + # CSIDL_COMMON_PROGRAMS only available works on NT/2000/XP, and + # will fail there if the user has no admin rights. + fldr = get_shortcuts_folder() + # If the group doesn't exist, then we don't make shortcuts - its + # possible that this isn't a "normal" install. + if os.path.isdir(fldr): + dst = os.path.join(fldr, "PythonWin.lnk") + create_shortcut( + os.path.join(lib_dir, "Pythonwin\\Pythonwin.exe"), + "The Pythonwin IDE", + dst, + "", + sys.prefix, + ) + file_created(dst) + if verbose: + print("Shortcut for Pythonwin created") + # And the docs. + if chm_file: + dst = os.path.join(fldr, "Python for Windows Documentation.lnk") + doc = "Documentation for the PyWin32 extensions" + create_shortcut(chm_file, doc, dst) + file_created(dst) + if verbose: + print("Shortcut to documentation created") + else: + if verbose: + print(f"Can't install shortcuts - {fldr!r} is not a folder") + except Exception as details: + print(details) + + # importing win32com.client ensures the gen_py dir created - not strictly + # necessary to do now, but this makes the installation "complete" + try: + import win32com.client # noqa + except ImportError: + # Don't let this error sound fatal + pass + print("The pywin32 extensions were successfully installed.") + + if is_bdist_wininst: + # Open a web page with info about the .exe installers being deprecated. + import webbrowser + + try: + webbrowser.open("https://mhammond.github.io/pywin32_installers.html") + except webbrowser.Error: + print("Please visit https://mhammond.github.io/pywin32_installers.html") + + +def uninstall(lib_dir): + # First ensure our system modules are loaded from pywin32_system, so + # we can remove the ones we copied... + LoadSystemModule(lib_dir, "pywintypes") + LoadSystemModule(lib_dir, "pythoncom") + + try: + RegisterCOMObjects(False) + except Exception as why: + print(f"Failed to unregister COM objects: {why}") + + try: + RegisterHelpFile(False, lib_dir) + except Exception as why: + print(f"Failed to unregister help file: {why}") + else: + if verbose: + print("Unregistered help file") + + try: + RegisterPythonwin(False, lib_dir) + except Exception as why: + print(f"Failed to unregister Pythonwin: {why}") + else: + if verbose: + print("Unregistered Pythonwin") + + try: + # remove gen_py directory. + gen_dir = os.path.join(lib_dir, "win32com", "gen_py") + if os.path.isdir(gen_dir): + shutil.rmtree(gen_dir) + if verbose: + print(f"Removed directory {gen_dir}") + + # Remove pythonwin compiled "config" files. + pywin_dir = os.path.join(lib_dir, "Pythonwin", "pywin") + for fname in glob.glob(os.path.join(pywin_dir, "*.cfc")): + os.remove(fname) + + # The dbi.pyd.old files we may have created. + try: + os.remove(os.path.join(lib_dir, "win32", "dbi.pyd.old")) + except OSError: + pass + try: + os.remove(os.path.join(lib_dir, "win32", "dbi_d.pyd.old")) + except OSError: + pass + + except Exception as why: + print(f"Failed to remove misc files: {why}") + + try: + fldr = get_shortcuts_folder() + for link in ("PythonWin.lnk", "Python for Windows Documentation.lnk"): + fqlink = os.path.join(fldr, link) + if os.path.isfile(fqlink): + os.remove(fqlink) + if verbose: + print(f"Removed {link}") + except Exception as why: + print(f"Failed to remove shortcuts: {why}") + # Now remove the system32 files. + files = glob.glob(os.path.join(lib_dir, "pywin32_system32\\*.*")) + # Try the system32 directory first - if that fails due to "access denied", + # it implies a non-admin user, and we use sys.prefix + try: + for dest_dir in [get_system_dir(), sys.prefix]: + # and copy some files over there + worked = 0 + for fname in files: + base = os.path.basename(fname) + dst = os.path.join(dest_dir, base) + if os.path.isfile(dst): + try: + os.remove(dst) + worked = 1 + if verbose: + print("Removed file %s" % (dst)) + except Exception: + print(f"FAILED to remove {dst}") + if worked: + break + except Exception as why: + print(f"FAILED to remove system files: {why}") + + +# NOTE: If this script is run from inside the bdist_wininst created +# binary installer or uninstaller, the command line args are either +# '-install' or '-remove'. + +# Important: From inside the binary installer this script MUST NOT +# call sys.exit() or raise SystemExit, otherwise not only this script +# but also the installer will terminate! (Is there a way to prevent +# this from the bdist_wininst C code?) + + +def verify_destination(location): + if not os.path.isdir(location): + raise argparse.ArgumentTypeError(f'Path "{location}" does not exist!') + return location + + +def main(): + parser = argparse.ArgumentParser( + formatter_class=argparse.RawDescriptionHelpFormatter, + description="""A post-install script for the pywin32 extensions. + + * Typical usage: + + > python pywin32_postinstall.py -install + + If you installed pywin32 via a .exe installer, this should be run + automatically after installation, but if it fails you can run it again. + + If you installed pywin32 via PIP, you almost certainly need to run this to + setup the environment correctly. + + Execute with script with a '-install' parameter, to ensure the environment + is setup correctly. + """, + ) + parser.add_argument( + "-install", + default=False, + action="store_true", + help="Configure the Python environment correctly for pywin32.", + ) + parser.add_argument( + "-remove", + default=False, + action="store_true", + help="Try and remove everything that was installed or copied.", + ) + parser.add_argument( + "-wait", + type=int, + help="Wait for the specified process to terminate before starting.", + ) + parser.add_argument( + "-silent", + default=False, + action="store_true", + help='Don\'t display the "Abort/Retry/Ignore" dialog for files in use.', + ) + parser.add_argument( + "-quiet", + default=False, + action="store_true", + help="Don't display progress messages.", + ) + parser.add_argument( + "-destination", + default=sysconfig.get_paths()["platlib"], + type=verify_destination, + help="Location of the PyWin32 installation", + ) + + args = parser.parse_args() + + if not args.quiet: + print(f"Parsed arguments are: {args}") + + if not args.install ^ args.remove: + parser.error("You need to either choose to -install or -remove!") + + if args.wait is not None: + try: + os.waitpid(args.wait, 0) + except OSError: + # child already dead + pass + + silent = args.silent + verbose = not args.quiet + + if args.install: + install(args.destination) + + if args.remove: + if not is_bdist_wininst: + uninstall(args.destination) + + +if __name__ == "__main__": + main() diff --git a/ml_env/Scripts/pywin32_testall.py b/ml_env/Scripts/pywin32_testall.py new file mode 100644 index 0000000..2aa9209 --- /dev/null +++ b/ml_env/Scripts/pywin32_testall.py @@ -0,0 +1,125 @@ +"""A test runner for pywin32""" + +import os +import site +import subprocess +import sys + +# locate the dirs based on where this script is - it may be either in the +# source tree, or in an installed Python 'Scripts' tree. +this_dir = os.path.dirname(__file__) +site_packages = [ + site.getusersitepackages(), +] + site.getsitepackages() + +failures = [] + + +# Run a test using subprocess and wait for the result. +# If we get an returncode != 0, we know that there was an error, but we don't +# abort immediately - we run as many tests as we can. +def run_test(script, cmdline_extras): + dirname, scriptname = os.path.split(script) + # some tests prefer to be run from their directory. + cmd = [sys.executable, "-u", scriptname] + cmdline_extras + print("--- Running '%s' ---" % script) + sys.stdout.flush() + result = subprocess.run(cmd, check=False, cwd=dirname) + print(f"*** Test script '{script}' exited with {result.returncode}") + sys.stdout.flush() + if result.returncode: + failures.append(script) + + +def find_and_run(possible_locations, extras): + for maybe in possible_locations: + if os.path.isfile(maybe): + run_test(maybe, extras) + break + else: + raise RuntimeError( + "Failed to locate a test script in one of %s" % possible_locations + ) + + +def main(): + import argparse + + code_directories = [this_dir] + site_packages + + parser = argparse.ArgumentParser( + description="A script to trigger tests in all subprojects of PyWin32." + ) + parser.add_argument( + "-no-user-interaction", + default=False, + action="store_true", + help="(This is now the default - use `-user-interaction` to include them)", + ) + + parser.add_argument( + "-user-interaction", + action="store_true", + help="Include tests which require user interaction", + ) + + parser.add_argument( + "-skip-adodbapi", + default=False, + action="store_true", + help="Skip the adodbapi tests; useful for CI where there's no provider", + ) + + args, remains = parser.parse_known_args() + + # win32, win32ui / Pythonwin + + extras = [] + if args.user_interaction: + extras.append("-user-interaction") + extras.extend(remains) + scripts = [ + "win32/test/testall.py", + "Pythonwin/pywin/test/all.py", + ] + for script in scripts: + maybes = [os.path.join(directory, script) for directory in code_directories] + find_and_run(maybes, extras) + + # win32com + maybes = [ + os.path.join(directory, "win32com", "test", "testall.py") + for directory in [ + os.path.join(this_dir, "com"), + ] + + site_packages + ] + extras = remains + ["1"] # only run "level 1" tests in CI + find_and_run(maybes, extras) + + # adodbapi + if not args.skip_adodbapi: + maybes = [ + os.path.join(directory, "adodbapi", "test", "adodbapitest.py") + for directory in code_directories + ] + find_and_run(maybes, remains) + # This script has a hard-coded sql server name in it, (and markh typically + # doesn't have a different server to test on) but there is now supposed to be a server out there on the Internet + # just to run these tests, so try it... + maybes = [ + os.path.join(directory, "adodbapi", "test", "test_adodbapi_dbapi20.py") + for directory in code_directories + ] + find_and_run(maybes, remains) + + if failures: + print("The following scripts failed") + for failure in failures: + print(">", failure) + sys.exit(1) + print("All tests passed \\o/") + + +if __name__ == "__main__": + main() diff --git a/ml_env/Scripts/ttx.exe b/ml_env/Scripts/ttx.exe new file mode 100644 index 0000000..513fb22 Binary files /dev/null and b/ml_env/Scripts/ttx.exe differ diff --git a/ml_env/pyvenv.cfg b/ml_env/pyvenv.cfg new file mode 100644 index 0000000..91a6eb3 --- /dev/null +++ b/ml_env/pyvenv.cfg @@ -0,0 +1,3 @@ +home = C:\ProgramData\Anaconda3 +include-system-site-packages = false +version = 3.9.7 diff --git a/ml_env/share/jupyter/kernels/python3/kernel.json b/ml_env/share/jupyter/kernels/python3/kernel.json new file mode 100644 index 0000000..cca38a4 --- /dev/null +++ b/ml_env/share/jupyter/kernels/python3/kernel.json @@ -0,0 +1,14 @@ +{ + "argv": [ + "python", + "-m", + "ipykernel_launcher", + "-f", + "{connection_file}" + ], + "display_name": "Python 3 (ipykernel)", + "language": "python", + "metadata": { + "debugger": true + } +} \ No newline at end of file diff --git a/ml_env/share/jupyter/kernels/python3/logo-32x32.png b/ml_env/share/jupyter/kernels/python3/logo-32x32.png new file mode 100644 index 0000000..be81330 Binary files /dev/null and b/ml_env/share/jupyter/kernels/python3/logo-32x32.png differ diff --git a/ml_env/share/jupyter/kernels/python3/logo-64x64.png b/ml_env/share/jupyter/kernels/python3/logo-64x64.png new file mode 100644 index 0000000..eebbff6 Binary files /dev/null and b/ml_env/share/jupyter/kernels/python3/logo-64x64.png differ diff --git a/ml_env/share/jupyter/kernels/python3/logo-svg.svg b/ml_env/share/jupyter/kernels/python3/logo-svg.svg new file mode 100644 index 0000000..467b07b --- /dev/null +++ b/ml_env/share/jupyter/kernels/python3/logo-svg.svg @@ -0,0 +1,265 @@ + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ml_env/share/man/man1/ipython.1 b/ml_env/share/man/man1/ipython.1 new file mode 100644 index 0000000..0f4a191 --- /dev/null +++ b/ml_env/share/man/man1/ipython.1 @@ -0,0 +1,60 @@ +.\" Hey, EMACS: -*- nroff -*- +.\" First parameter, NAME, should be all caps +.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection +.\" other parameters are allowed: see man(7), man(1) +.TH IPYTHON 1 "July 15, 2011" +.\" Please adjust this date whenever revising the manpage. +.\" +.\" Some roff macros, for reference: +.\" .nh disable hyphenation +.\" .hy enable hyphenation +.\" .ad l left justify +.\" .ad b justify to both left and right margins +.\" .nf disable filling +.\" .fi enable filling +.\" .br insert line break +.\" .sp insert n+1 empty lines +.\" for manpage-specific macros, see man(7) and groff_man(7) +.\" .SH section heading +.\" .SS secondary section heading +.\" +.\" +.\" To preview this page as plain text: nroff -man ipython.1 +.\" +.SH NAME +ipython \- Tools for Interactive Computing in Python. +.SH SYNOPSIS +.B ipython +.RI [ options ] " files" ... + +.B ipython subcommand +.RI [ options ] ... + +.SH DESCRIPTION +An interactive Python shell with automatic history (input and output), dynamic +object introspection, easier configuration, command completion, access to the +system shell, integration with numerical and scientific computing tools, +web notebook, Qt console, and more. + +For more information on how to use IPython, see 'ipython \-\-help', +or 'ipython \-\-help\-all' for all available command\(hyline options. + +.SH "ENVIRONMENT VARIABLES" +.sp +.PP +\fIIPYTHONDIR\fR +.RS 4 +This is the location where IPython stores all its configuration files. The default +is $HOME/.ipython if IPYTHONDIR is not defined. + +You can see the computed value of IPYTHONDIR with `ipython locate`. + +.SH FILES + +IPython uses various configuration files stored in profiles within IPYTHONDIR. +To generate the default configuration files and start configuring IPython, +do 'ipython profile create', and edit '*_config.py' files located in +IPYTHONDIR/profile_default. + +.SH AUTHORS +IPython is written by the IPython Development Team . diff --git a/ml_env/share/man/man1/ttx.1 b/ml_env/share/man/man1/ttx.1 new file mode 100644 index 0000000..bba23b5 --- /dev/null +++ b/ml_env/share/man/man1/ttx.1 @@ -0,0 +1,225 @@ +.Dd May 18, 2004 +.\" ttx is not specific to any OS, but contrary to what groff_mdoc(7) +.\" seems to imply, entirely omitting the .Os macro causes 'BSD' to +.\" be used, so I give a zero-width space as its argument. +.Os \& +.\" The "FontTools Manual" argument apparently has no effect in +.\" groff 1.18.1. I think it is a bug in the -mdoc groff package. +.Dt TTX 1 "FontTools Manual" +.Sh NAME +.Nm ttx +.Nd tool for manipulating TrueType and OpenType fonts +.Sh SYNOPSIS +.Nm +.Bk +.Op Ar option ... +.Ek +.Bk +.Ar file ... +.Ek +.Sh DESCRIPTION +.Nm +is a tool for manipulating TrueType and OpenType fonts. It can convert +TrueType and OpenType fonts to and from an +.Tn XML Ns -based format called +.Tn TTX . +.Tn TTX +files have a +.Ql .ttx +extension. +.Pp +For each +.Ar file +argument it is given, +.Nm +detects whether it is a +.Ql .ttf , +.Ql .otf +or +.Ql .ttx +file and acts accordingly: if it is a +.Ql .ttf +or +.Ql .otf +file, it generates a +.Ql .ttx +file; if it is a +.Ql .ttx +file, it generates a +.Ql .ttf +or +.Ql .otf +file. +.Pp +By default, every output file is created in the same directory as the +corresponding input file and with the same name except for the +extension, which is substituted appropriately. +.Nm +never overwrites existing files; if necessary, it appends a suffix to +the output file name before the extension, as in +.Pa Arial#1.ttf . +.Ss "General options" +.Bl -tag -width ".Fl t Ar table" +.It Fl h +Display usage information. +.It Fl d Ar dir +Write the output files to directory +.Ar dir +instead of writing every output file to the same directory as the +corresponding input file. +.It Fl o Ar file +Write the output to +.Ar file +instead of writing it to the same directory as the +corresponding input file. +.It Fl v +Be verbose. Write more messages to the standard output describing what +is being done. +.It Fl a +Allow virtual glyphs ID's on compile or decompile. +.El +.Ss "Dump options" +The following options control the process of dumping font files +(TrueType or OpenType) to +.Tn TTX +files. +.Bl -tag -width ".Fl t Ar table" +.It Fl l +List table information. Instead of dumping the font to a +.Tn TTX +file, display minimal information about each table. +.It Fl t Ar table +Dump table +.Ar table . +This option may be given multiple times to dump several tables at +once. When not specified, all tables are dumped. +.It Fl x Ar table +Exclude table +.Ar table +from the list of tables to dump. This option may be given multiple +times to exclude several tables from the dump. The +.Fl t +and +.Fl x +options are mutually exclusive. +.It Fl s +Split tables. Dump each table to a separate +.Tn TTX +file and write (under the name that would have been used for the output +file if the +.Fl s +option had not been given) one small +.Tn TTX +file containing references to the individual table dump files. This +file can be used as input to +.Nm +as long as the referenced files can be found in the same directory. +.It Fl i +.\" XXX: I suppose OpenType programs (exist and) are also affected. +Don't disassemble TrueType instructions. When this option is specified, +all TrueType programs (glyph programs, the font program and the +pre-program) are written to the +.Tn TTX +file as hexadecimal data instead of +assembly. This saves some time and results in smaller +.Tn TTX +files. +.It Fl y Ar n +When decompiling a TrueType Collection (TTC) file, +decompile font number +.Ar n , +starting from 0. +.El +.Ss "Compilation options" +The following options control the process of compiling +.Tn TTX +files into font files (TrueType or OpenType): +.Bl -tag -width ".Fl t Ar table" +.It Fl m Ar fontfile +Merge the input +.Tn TTX +file +.Ar file +with +.Ar fontfile . +No more than one +.Ar file +argument can be specified when this option is used. +.It Fl b +Don't recalculate glyph bounding boxes. Use the values in the +.Tn TTX +file as is. +.El +.Sh "THE TTX FILE FORMAT" +You can find some information about the +.Tn TTX +file format in +.Pa documentation.html . +In particular, you will find in that file the list of tables understood by +.Nm +and the relations between TrueType GlyphIDs and the glyph names used in +.Tn TTX +files. +.Sh EXAMPLES +In the following examples, all files are read from and written to the +current directory. Additionally, the name given for the output file +assumes in every case that it did not exist before +.Nm +was invoked. +.Pp +Dump the TrueType font contained in +.Pa FreeSans.ttf +to +.Pa FreeSans.ttx : +.Pp +.Dl ttx FreeSans.ttf +.Pp +Compile +.Pa MyFont.ttx +into a TrueType or OpenType font file: +.Pp +.Dl ttx MyFont.ttx +.Pp +List the tables in +.Pa FreeSans.ttf +along with some information: +.Pp +.Dl ttx -l FreeSans.ttf +.Pp +Dump the +.Sq cmap +table from +.Pa FreeSans.ttf +to +.Pa FreeSans.ttx : +.Pp +.Dl ttx -t cmap FreeSans.ttf +.Sh NOTES +On MS\-Windows and MacOS, +.Nm +is available as a graphical application to which files can be dropped. +.Sh SEE ALSO +.Pa documentation.html +.Pp +.Xr fontforge 1 , +.Xr ftinfo 1 , +.Xr gfontview 1 , +.Xr xmbdfed 1 , +.Xr Font::TTF 3pm +.Sh AUTHORS +.Nm +was written by +.An -nosplit +.An "Just van Rossum" Aq just@letterror.com . +.Pp +This manual page was written by +.An "Florent Rougon" Aq f.rougon@free.fr +for the Debian GNU/Linux system based on the existing FontTools +documentation. It may be freely used, modified and distributed without +restrictions. +.\" For Emacs: +.\" Local Variables: +.\" fill-column: 72 +.\" sentence-end: "[.?!][]\"')}]*\\($\\| $\\| \\| \\)[ \n]*" +.\" sentence-end-double-space: t +.\" End: \ No newline at end of file diff --git a/models/gradient_boosting_regressor.py b/models/gradient_boosting_regressor.py new file mode 100644 index 0000000..c7373d9 --- /dev/null +++ b/models/gradient_boosting_regressor.py @@ -0,0 +1,187 @@ +import numpy as np + +class Node: + def __init__(self, feature=None, threshold=None, left=None, right=None, *, value=None): + self.feature = feature + self.threshold = threshold + self.left = left + self.right = right + self.value = value + + def is_leaf_node(self): + # Check if the node is a leaf. + return self.value is not None + + +class DecisionTree: + def __init__(self, min_samples_split=2, max_depth=100, n_features=None): + if min_samples_split < 2: + raise ValueError("min_samples_split must be at least 2.") + if max_depth <= 0: + raise ValueError("max_depth must be a positive integer.") + self.min_samples_split = min_samples_split + self.max_depth = max_depth + self.n_features = n_features + self.root = None + + def fit(self, X, y): + # Fit the decision tree on the data. + if not isinstance(X, np.ndarray) or not isinstance(y, np.ndarray): + raise ValueError("X and y must be NumPy arrays.") + + if len(X) != len(y): + raise ValueError("X and y must have the same number of samples.") + if len(X.shape) != 2: + raise ValueError("X must be a 2D array.") + if len(y.shape) != 1: + raise ValueError("y must be a 1D array.") + if X.shape[0] < self.min_samples_split: + raise ValueError("Number of samples is less than min_samples_split.") + self.n_features = X.shape[1] if not self.n_features else min(X.shape[1], self.n_features) + self.root = self._grow_tree(X, y) + + def _grow_tree(self, X, y, depth=0): + # Recursively build the decision tree. + n_samples, n_features = X.shape + n_labels = len(np.unique(y)) + + if depth >= self.max_depth or n_labels == 1 or n_samples < self.min_samples_split: + leaf_value = self._most_common_label(y) + return Node(value=leaf_value) + + feat_idxs = np.random.choice(n_features, self.n_features, replace=False) + + best_feature, best_threshold = self._best_split(X, y, feat_idxs) + + left_idxs, right_idxs = self._split(X[:, best_feature], best_threshold) + left = self._grow_tree(X[left_idxs, :], y[left_idxs], depth + 1) + right = self._grow_tree(X[right_idxs, :], y[right_idxs], depth + 1) + + return Node(best_feature, best_threshold, left, right) + + def _best_split(self, X, y, feat_idxs): + #Find the best feature and threshold to split on. + if len(feat_idxs) == 0: + raise ValueError("feat_idxs cannot be empty.") + best_gain = -1 + split_idx, split_threshold = None, None + + for feat_idx in feat_idxs: + X_column = X[:, feat_idx] + thresholds = np.unique(X_column) + + for threshold in thresholds: + gain = self._information_gain(y, X_column, threshold) + + if gain > best_gain: + best_gain = gain + split_idx = feat_idx + split_threshold = threshold + + return split_idx, split_threshold + + def _information_gain(self, y, X_column, threshold): + # Calculate the reduction in variance from a potential split. + parent_variance = np.var(y) + + left_idxs, right_idxs = self._split(X_column, threshold) + + if len(left_idxs) == 0 or len(right_idxs) == 0: + return 0 + + n = len(y) + n_left, n_right = len(left_idxs), len(right_idxs) + var_left, var_right = np.var(y[left_idxs]), np.var(y[right_idxs]) + child_variance = (n_left / n) * var_left + (n_right / n) * var_right + + return parent_variance - child_variance + + def _split(self, X_column, threshold): + # Split the data into left and right groups based on the threshold. + left_idxs = np.argwhere(X_column <= threshold).flatten() + right_idxs = np.argwhere(X_column > threshold).flatten() + return left_idxs, right_idxs + + def _most_common_label(self, y): + # Return the mean value for regression tasks. + return np.mean(y) + + def predict(self, X): + # Predict the labels for a dataset. + return np.array([self._traverse_tree(x, self.root) for x in X]) + + def _traverse_tree(self, x, node): + # Traverse the tree recursively to make a prediction for a single sample. + if node.is_leaf_node(): + return node.value + + if x[node.feature] <= node.threshold: + return self._traverse_tree(x, node.left) + return self._traverse_tree(x, node.right) + +class GradientBoostingRegressor: + # Gradient Boosting Regressor for regression tasks. + def __init__(self, n_estimators=100, learning_rate=0.1, max_depth=3, min_samples_split=2): + if n_estimators <= 0: + raise ValueError("n_estimators must be a positive integer.") + if not (0 < learning_rate <= 1): + raise ValueError("learning_rate must be in the range (0, 1].") + if max_depth <= 0: + raise ValueError("max_depth must be a positive integer.") + if min_samples_split < 2: + raise ValueError("min_samples_split must be at least 2.") + self.n_estimators = n_estimators + self.learning_rate = learning_rate + self.max_depth = max_depth + self.min_samples_split = min_samples_split + self.trees = [] + self.init_prediction = None + + def fit(self, X, y): + # Fit the gradient boosting regressor on the training data. + if len(X) != len(y): + raise ValueError("X and y must have the same number of samples.") + if len(X.shape) != 2: + raise ValueError("X must be a 2D array.") + if len(y.shape) != 1: + raise ValueError("y must be a 1D array.") + if len(y) == 0: + raise ValueError("The target array 'y' is empty.") + if len(np.unique(y)) == 1: + print("Warning: All target values are identical. The model will predict a constant value.") + + self.init_prediction = np.mean(y) + current_predictions = np.full(y.shape, self.init_prediction) + + for i in range(self.n_estimators): + try: + residuals = y - current_predictions + + tree = DecisionTree( + max_depth=self.max_depth, + min_samples_split=self.min_samples_split + ) + tree.fit(X, residuals) + self.trees.append(tree) + + predictions = tree.predict(X) + current_predictions += self.learning_rate * predictions + except Exception as e: + print(f"Error during training for tree {i + 1}: {e}. Continuing with the next tree.") + + def predict(self, X): + # Predict target values for the input data. + if len(X.shape) != 2: + raise ValueError("X must be a 2D array.") + if X.shape[0] == 0: + raise ValueError("X has no samples.") + + predictions = np.full((X.shape[0],), self.init_prediction) + + for i, tree in enumerate(self.trees): + try: + predictions += self.learning_rate * tree.predict(X) + except Exception as e: + print(f"Error during prediction with tree {i + 1}: {e}. Input shape: {X.shape}") + + return predictions \ No newline at end of file diff --git a/tests/laptop_prices.csv b/tests/laptop_prices.csv new file mode 100644 index 0000000..42556ef --- /dev/null +++ b/tests/laptop_prices.csv @@ -0,0 +1,1276 @@ +Company,Product,TypeName,Inches,Ram,OS,Weight,Price_euros,Screen,ScreenW,ScreenH,Touchscreen,IPSpanel,RetinaDisplay,CPU_company,CPU_freq,CPU_model,PrimaryStorage,SecondaryStorage,PrimaryStorageType,SecondaryStorageType,GPU_company,GPU_model +Apple,MacBook Pro,Ultrabook,13.3,8,macOS,1.37,1339.69,Standard,2560,1600,No,Yes,Yes,Intel,2.3,Core i5,128,0,SSD,No,Intel,Iris Plus Graphics 640 +Apple,Macbook Air,Ultrabook,13.3,8,macOS,1.34,898.94,Standard,1440,900,No,No,No,Intel,1.8,Core i5,128,0,Flash Storage,No,Intel,HD Graphics 6000 +HP,250 G6,Notebook,15.6,8,No OS,1.86,575.0,Full HD,1920,1080,No,No,No,Intel,2.5,Core i5 7200U,256,0,SSD,No,Intel,HD Graphics 620 +Apple,MacBook Pro,Ultrabook,15.4,16,macOS,1.83,2537.45,Standard,2880,1800,No,Yes,Yes,Intel,2.7,Core i7,512,0,SSD,No,AMD,Radeon Pro 455 +Apple,MacBook Pro,Ultrabook,13.3,8,macOS,1.37,1803.6,Standard,2560,1600,No,Yes,Yes,Intel,3.1,Core i5,256,0,SSD,No,Intel,Iris Plus Graphics 650 +Acer,Aspire 3,Notebook,15.6,4,Windows 10,2.1,400.0,Standard,1366,768,No,No,No,AMD,3.0,A9-Series 9420,500,0,HDD,No,AMD,Radeon R5 +Apple,MacBook Pro,Ultrabook,15.4,16,Mac OS X,2.04,2139.97,Standard,2880,1800,No,Yes,Yes,Intel,2.2,Core i7,256,0,Flash Storage,No,Intel,Iris Pro Graphics +Apple,Macbook Air,Ultrabook,13.3,8,macOS,1.34,1158.7,Standard,1440,900,No,No,No,Intel,1.8,Core i5,256,0,Flash Storage,No,Intel,HD Graphics 6000 +Asus,ZenBook UX430UN,Ultrabook,14.0,16,Windows 10,1.3,1495.0,Full HD,1920,1080,No,No,No,Intel,1.8,Core i7 8550U,512,0,SSD,No,Nvidia,GeForce MX150 +Acer,Swift 3,Ultrabook,14.0,8,Windows 10,1.6,770.0,Full HD,1920,1080,No,Yes,No,Intel,1.6,Core i5 8250U,256,0,SSD,No,Intel,UHD Graphics 620 +HP,250 G6,Notebook,15.6,4,No OS,1.86,393.9,Standard,1366,768,No,No,No,Intel,2.5,Core i5 7200U,500,0,HDD,No,Intel,HD Graphics 620 +HP,250 G6,Notebook,15.6,4,No OS,1.86,344.99,Full HD,1920,1080,No,No,No,Intel,2.0,Core i3 6006U,500,0,HDD,No,Intel,HD Graphics 520 +Apple,MacBook Pro,Ultrabook,15.4,16,macOS,1.83,2439.97,Standard,2880,1800,No,Yes,Yes,Intel,2.8,Core i7,256,0,SSD,No,AMD,Radeon Pro 555 +Dell,Inspiron 3567,Notebook,15.6,4,Windows 10,2.2,498.9,Full HD,1920,1080,No,No,No,Intel,2.0,Core i3 6006U,256,0,SSD,No,AMD,Radeon R5 M430 +Apple,"MacBook 12""",Ultrabook,12.0,8,macOS,0.92,1262.4,Standard,2304,1440,No,Yes,Yes,Intel,1.2,Core M m3,256,0,SSD,No,Intel,HD Graphics 615 +Apple,MacBook Pro,Ultrabook,13.3,8,macOS,1.37,1518.55,Standard,2560,1600,No,Yes,Yes,Intel,2.3,Core i5,256,0,SSD,No,Intel,Iris Plus Graphics 640 +Dell,Inspiron 3567,Notebook,15.6,8,Windows 10,2.2,745.0,Full HD,1920,1080,No,No,No,Intel,2.7,Core i7 7500U,256,0,SSD,No,AMD,Radeon R5 M430 +Apple,MacBook Pro,Ultrabook,15.4,16,macOS,1.83,2858.0,Standard,2880,1800,No,Yes,Yes,Intel,2.9,Core i7,512,0,SSD,No,AMD,Radeon Pro 560 +Lenovo,IdeaPad 320-15IKB,Notebook,15.6,8,No OS,2.2,499.0,Full HD,1920,1080,No,No,No,Intel,2.4,Core i3 7100U,1024,0,HDD,No,Nvidia,GeForce 940MX +Dell,XPS 13,Ultrabook,13.3,8,Windows 10,1.22,979.0,Full HD,1920,1080,Yes,Yes,No,Intel,1.6,Core i5 8250U,128,0,SSD,No,Intel,UHD Graphics 620 +Asus,Vivobook E200HA,Netbook,11.6,2,Windows 10,0.98,191.9,Standard,1366,768,No,No,No,Intel,1.44,Atom x5-Z8350,32,0,Flash Storage,No,Intel,HD Graphics 400 +Lenovo,Legion Y520-15IKBN,Gaming,15.6,8,Windows 10,2.5,999.0,Full HD,1920,1080,No,Yes,No,Intel,2.5,Core i5 7300HQ,128,1024,SSD,HDD,Nvidia,GeForce GTX 1050 +HP,255 G6,Notebook,15.6,4,No OS,1.86,258.0,Standard,1366,768,No,No,No,AMD,1.5,E-Series E2-9000e,500,0,HDD,No,AMD,Radeon R2 +Dell,Inspiron 5379,2 in 1 Convertible,13.3,8,Windows 10,1.62,819.0,Full HD,1920,1080,Yes,No,No,Intel,1.6,Core i5 8250U,256,0,SSD,No,Intel,UHD Graphics 620 +HP,15-BS101nv (i7-8550U/8GB/256GB/FHD/W10),Ultrabook,15.6,8,Windows 10,1.91,659.0,Full HD,1920,1080,No,No,No,Intel,1.8,Core i7 8550U,256,0,SSD,No,Intel,HD Graphics 620 +Dell,Inspiron 3567,Notebook,15.6,4,Windows 10,2.3,418.64,Standard,1366,768,No,No,No,Intel,2.0,Core i3 6006U,1024,0,HDD,No,Intel,HD Graphics 520 +Apple,MacBook Air,Ultrabook,13.3,8,Mac OS X,1.35,1099.0,Standard,1440,900,No,No,No,Intel,1.6,Core i5,128,0,Flash Storage,No,Intel,HD Graphics 6000 +Dell,Inspiron 5570,Notebook,15.6,8,Windows 10,2.2,800.0,Full HD,1920,1080,No,No,No,Intel,1.6,Core i5 8250U,256,0,SSD,No,AMD,Radeon 530 +Dell,Latitude 5590,Ultrabook,15.6,8,Windows 10,1.88,1298.0,Full HD,1920,1080,No,No,No,Intel,1.9,Core i7 8650U,256,256,SSD,SSD,Intel,UHD Graphics 620 +HP,ProBook 470,Notebook,17.3,8,Windows 10,2.5,896.0,Full HD,1920,1080,No,No,No,Intel,1.6,Core i5 8250U,1024,0,HDD,No,Nvidia,GeForce 930MX +Chuwi,"LapBook 15.6""",Notebook,15.6,4,Windows 10,1.89,244.99,Full HD,1920,1080,No,No,No,Intel,1.44,Atom x5-Z8300,64,0,Flash Storage,No,Intel,HD Graphics +Asus,E402WA-GA010T (E2-6110/2GB/32GB/W10),Notebook,14.0,2,Windows 10,1.65,199.0,Standard,1366,768,No,No,No,AMD,1.5,E-Series E2-6110,32,0,Flash Storage,No,AMD,Radeon R2 +HP,17-ak001nv (A6-9220/4GB/500GB/Radeon,Notebook,17.3,4,Windows 10,2.71,439.0,Full HD,1920,1080,No,No,No,AMD,2.5,A6-Series 9220,500,0,HDD,No,AMD,Radeon 530 +Dell,XPS 13,Ultrabook,13.3,16,Windows 10,1.2,1869.0,Quad HD+,3200,1800,Yes,No,No,Intel,1.8,Core i7 8550U,512,0,SSD,No,Intel,UHD Graphics 620 +Apple,MacBook Air,Ultrabook,13.3,8,Mac OS X,1.35,998.0,Standard,1440,900,No,No,No,Intel,1.6,Core i5,256,0,Flash Storage,No,Intel,HD Graphics 6000 +Lenovo,IdeaPad 120S-14IAP,Notebook,14.0,4,Windows 10,1.44,249.0,Standard,1366,768,No,No,No,Intel,1.1,Celeron Dual Core N3350,64,0,Flash Storage,No,Intel,HD Graphics 500 +Acer,Aspire 3,Notebook,15.6,4,Linux,2.1,367.0,Standard,1366,768,No,No,No,Intel,2.7,Core i3 7130U,1024,0,HDD,No,Intel,HD Graphics 620 +Dell,Inspiron 5770,Notebook,17.3,8,Windows 10,2.8,979.0,Full HD,1920,1080,No,Yes,No,Intel,1.6,Core i5 8250U,128,1024,SSD,HDD,AMD,Radeon 530 +HP,250 G6,Notebook,15.6,4,Windows 10,1.86,488.69,Standard,1366,768,No,No,No,Intel,2.5,Core i5 7200U,1024,0,HDD,No,Intel,HD Graphics 620 +HP,ProBook 450,Notebook,15.6,8,Windows 10,2.1,879.0,Full HD,1920,1080,No,No,No,Intel,1.6,Core i5 8250U,256,0,SSD,No,Nvidia,GeForce 930MX +Asus,X540UA-DM186 (i3-6006U/4GB/1TB/FHD/Linux),Notebook,15.6,4,Linux,2.0,389.0,Full HD,1920,1080,No,No,No,Intel,2.0,Core i3 6006U,1024,0,HDD,No,Intel,HD Graphics 620 +Dell,Inspiron 7577,Gaming,15.6,16,Windows 10,2.65,1499.0,Full HD,1920,1080,No,Yes,No,Intel,2.8,Core i7 7700HQ,256,1024,SSD,HDD,Nvidia,GeForce GTX 1060 +Asus,X542UQ-GO005 (i5-7200U/8GB/1TB/GeForce,Notebook,15.6,8,Linux,2.3,522.99,Standard,1366,768,No,No,No,Intel,2.5,Core i5 7200U,1024,0,HDD,No,Nvidia,GeForce 940MX +Acer,Aspire A515-51G,Notebook,15.6,4,Windows 10,2.2,682.0,Full HD,1920,1080,No,Yes,No,Intel,1.6,Core i5 8250U,256,0,SSD,No,Intel,UHD Graphics 620 +Dell,Inspiron 7773,2 in 1 Convertible,17.3,12,Windows 10,2.77,999.0,Full HD,1920,1080,Yes,No,No,Intel,1.6,Core i5 8250U,1024,0,HDD,No,Nvidia,GeForce 150MX +Apple,MacBook Pro,Ultrabook,13.3,8,macOS,1.37,1419.0,Standard,2560,1600,No,Yes,Yes,Intel,2.0,Core i5,256,0,SSD,No,Intel,Iris Graphics 540 +Lenovo,IdeaPad 320-15ISK,Notebook,15.6,4,No OS,2.2,369.0,Standard,1366,768,No,No,No,Intel,2.0,Core i3 6006U,128,0,SSD,No,Intel,HD Graphics 520 +Asus,Rog Strix,Gaming,17.3,8,Windows 10,3.2,1299.0,Full HD,1920,1080,No,No,No,AMD,3.0,Ryzen 1700,256,1024,SSD,HDD,AMD,Radeon RX 580 +Dell,Inspiron 3567,Notebook,15.6,4,Windows 10,2.3,639.0,Full HD,1920,1080,No,No,No,Intel,2.5,Core i5 7200U,256,0,SSD,No,AMD,Radeon R5 M430 +Asus,X751NV-TY001T (N4200/4GB/1TB/GeForce,Notebook,17.3,4,Windows 10,2.8,466.0,Standard,1366,768,No,No,No,Intel,1.1,Pentium Quad Core N4200,1024,0,HDD,No,Nvidia,GeForce 920MX +Lenovo,Yoga Book,2 in 1 Convertible,10.1,4,Android,0.69,319.0,Standard,1920,1200,Yes,Yes,No,Intel,1.44,Atom x5-Z8550,64,0,Flash Storage,No,Intel,HD Graphics 400 +Acer,Aspire A515-51G,Notebook,15.6,8,Windows 10,2.2,841.0,Full HD,1920,1080,No,Yes,No,Intel,1.8,Core i7 8550U,256,0,SSD,No,Nvidia,GeForce MX150 +HP,255 G6,Notebook,15.6,4,Windows 10,1.86,398.49,Full HD,1920,1080,No,No,No,AMD,2.5,A6-Series 9220,256,0,SSD,No,AMD,Radeon R4 Graphics +HP,ProBook 430,Notebook,13.3,8,Windows 10,1.49,1103.0,Full HD,1920,1080,No,No,No,Intel,1.8,Core i7 8550U,512,0,SSD,No,Intel,UHD Graphics 620 +Acer,Aspire 3,Notebook,15.6,4,Windows 10,2.4,384.0,Standard,1366,768,No,No,No,Intel,2.4,Core i3 7100U,1024,0,HDD,No,Intel,HD Graphics 620 +Dell,Inspiron 3576,Notebook,15.6,8,Windows 10,2.13,767.8,Full HD,1920,1080,No,No,No,Intel,1.8,Core i7 8550U,256,0,SSD,No,AMD,Radeon 520 +HP,15-bs002nv (i3-6006U/4GB/128GB/FHD/W10),Notebook,15.6,4,Windows 10,1.91,439.0,Full HD,1920,1080,No,No,No,Intel,2.0,Core i3 6006U,128,0,SSD,No,Intel,HD Graphics 520 +Asus,VivoBook Max,Notebook,15.6,4,Windows 10,2.0,586.19,Standard,1366,768,No,No,No,Intel,2.5,Core i5 7200U,256,0,SSD,No,Intel,HD Graphics 620 +MSI,GS73VR 7RG,Gaming,17.3,16,Windows 10,2.43,2449.0,Full HD,1920,1080,No,No,No,Intel,2.8,Core i7 7700HQ,256,2048,SSD,HDD,Nvidia,GeForce GTX 1070 +Asus,X541UA-DM1897 (i3-6006U/4GB/256GB/FHD/Linux),Notebook,15.6,4,Linux,2.0,415.0,Full HD,1920,1080,No,No,No,Intel,2.0,Core i3 6006U,256,0,SSD,No,Intel,HD Graphics 520 +Dell,Inspiron 5770,Notebook,17.3,16,Windows 10,2.8,1299.0,Full HD,1920,1080,No,No,No,Intel,1.8,Core i7 8550U,256,2048,SSD,HDD,AMD,Radeon 530 +Dell,Vostro 5471,Ultrabook,14.0,8,Windows 10,1.7,879.0,Full HD,1920,1080,No,No,No,Intel,1.6,Core i5 8250U,256,0,SSD,No,Intel,UHD Graphics 620 +Lenovo,IdeaPad 520S-14IKB,Notebook,14.0,8,No OS,1.7,599.0,Full HD,1920,1080,No,Yes,No,Intel,2.7,Core i3 7130U,256,0,SSD,No,Intel,HD Graphics 620 +Asus,UX410UA-GV350T (i5-8250U/8GB/256GB/FHD/W10),Notebook,14.0,8,Windows 10,1.4,941.0,Full HD,1920,1080,No,No,No,Intel,1.6,Core i5 8250U,256,0,SSD,No,Intel,UHD Graphics 620 +HP,250 G6,Notebook,15.6,8,Windows 10,1.86,690.0,Full HD,1920,1080,No,No,No,Intel,2.5,Core i5 7200U,256,0,SSD,No,Intel,HD Graphics 620 +Asus,ZenBook Pro,Ultrabook,15.6,16,Windows 10,1.8,1983.0,Full HD,1920,1080,No,No,No,Intel,2.8,Core i7 7700HQ,512,0,SSD,No,Nvidia,GeForce GTX 1050 Ti +HP,250 G6,Notebook,15.6,4,Windows 10,1.86,438.69,Standard,1366,768,No,No,No,Intel,2.0,Core i3 6006U,500,0,HDD,No,AMD,Radeon 520 +HP,Stream 14-AX040wm,Notebook,14.0,4,Windows 10,1.44,229.0,Standard,1366,768,No,No,No,Intel,1.6,Celeron Dual Core N3060,32,0,SSD,No,Intel,HD Graphics 400 +Lenovo,V310-15ISK (i5-7200U/4GB/1TB/FHD/W10),Notebook,15.6,4,Windows 10,1.9,549.0,Full HD,1920,1080,No,No,No,Intel,2.5,Core i5 7200U,1024,0,HDD,No,Intel,HD Graphics 620 +Asus,FX753VE-GC093 (i7-7700HQ/12GB/1TB/GeForce,Gaming,17.3,12,Linux,3.0,949.0,Full HD,1920,1080,No,No,No,Intel,2.8,Core i7 7700HQ,1024,0,HDD,No,Nvidia,GeForce GTX 1050 Ti +Microsoft,Surface Laptop,Ultrabook,13.5,4,Windows 10 S,1.252,1089.0,Standard,2256,1504,Yes,No,No,Intel,2.5,Core i5 7200U,128,0,SSD,No,Intel,HD Graphics 620 +Dell,Inspiron 5370,Ultrabook,13.3,8,Windows 10,1.4,955.0,Full HD,1920,1080,No,Yes,No,Intel,1.8,Core i7 8550U,256,0,SSD,No,AMD,Radeon 530 +Dell,Inspiron 5570,Notebook,15.6,8,Windows 10,2.2,870.0,Full HD,1920,1080,No,No,No,Intel,1.8,Core i7 8550U,256,0,SSD,No,AMD,Radeon 530 +MSI,GL72M 7RDX,Gaming,17.3,8,Windows 10,2.7,1095.0,Full HD,1920,1080,No,No,No,Intel,2.5,Core i5 7300HQ,128,1024,SSD,HDD,Nvidia,GeForce GTX 1050 +Acer,Aspire E5-475,Notebook,14.0,8,Windows 10,2.1,389.0,Standard,1366,768,No,No,No,Intel,2.0,Core i3 6006U,1024,0,HDD,No,Intel,HD Graphics 520 +Asus,FX503VD-E4022T (i7-7700HQ/8GB/1TB/GeForce,Gaming,15.6,8,Windows 10,2.2,949.0,Full HD,1920,1080,No,No,No,Intel,2.8,Core i7 7700HQ,1024,0,HDD,No,Nvidia,GeForce GTX 1050 +Lenovo,IdeaPad 320-15IKBN,Notebook,15.6,8,No OS,2.2,519.0,Full HD,1920,1080,No,No,No,Intel,2.5,Core i5 7200U,2048,0,HDD,No,Intel,HD Graphics 620 +Dell,Inspiron 5570,Notebook,15.6,8,Windows 10,2.02,855.0,Full HD,1920,1080,No,No,No,Intel,1.8,Core i7 8550U,128,1024,SSD,HDD,Intel,UHD Graphics 620 +Acer,Aspire A515-51G-32MX,Notebook,15.6,4,Windows 10,2.2,530.0,Full HD,1920,1080,No,No,No,Intel,2.7,Core i3 7130U,1024,0,HDD,No,Nvidia,GeForce MX130 +HP,ProBook 470,Notebook,17.3,8,Windows 10,2.5,977.0,Full HD,1920,1080,No,No,No,Intel,1.6,Core i5 8250U,128,1024,SSD,HDD,Nvidia,GeForce 930MX +Dell,Latitude 5590,Ultrabook,15.6,8,Windows 10,1.88,1096.16,Full HD,1920,1080,No,Yes,No,Intel,1.6,Core i5 8250U,256,0,SSD,No,Intel,UHD Graphics 620 +Apple,"MacBook 12""",Ultrabook,12.0,8,macOS,0.92,1510.0,Standard,2304,1440,No,Yes,Yes,Intel,1.3,Core i5,512,0,SSD,No,Intel,HD Graphics 615 +HP,ProBook 440,Notebook,14.0,8,Windows 10,1.63,860.0,Full HD,1920,1080,No,No,No,Intel,1.6,Core i5 8250U,256,0,SSD,No,Intel,HD Graphics 620 +Lenovo,IdeaPad 320-15AST,Notebook,15.6,4,Windows 10,2.2,399.0,Full HD,1920,1080,No,No,No,AMD,2.5,A6-Series 9220,128,0,SSD,No,AMD,R4 Graphics +Acer,Aspire 3,Notebook,15.6,4,Windows 10,2.1,395.0,Standard,1366,768,No,No,No,AMD,3.0,A9-Series 9420,1024,0,HDD,No,AMD,Radeon R5 +Dell,Inspiron 7577,Gaming,15.6,16,Windows 10,2.65,1349.0,Full HD,1920,1080,No,Yes,No,Intel,2.8,Core i7 7700HQ,128,1024,SSD,HDD,Nvidia,GeForce GTX 1050 Ti +HP,Pavilion 15-CK000nv,Ultrabook,15.6,8,Windows 10,1.83,699.0,Full HD,1920,1080,No,Yes,No,Intel,1.8,Core i7 8550U,256,0,SSD,No,Nvidia,GeForce GTX 940MX +HP,250 G6,Notebook,15.6,8,Windows 10,1.96,598.99,Full HD,1920,1080,No,No,No,Intel,2.5,Core i5 7200U,256,0,SSD,No,Intel,HD Graphics 620 +Asus,FX503VM-E4007T (i7-7700HQ/16GB/1TB,Gaming,15.6,16,Windows 10,2.2,1449.0,Full HD,1920,1080,No,Yes,No,Intel,2.8,Core i7 7700HQ,128,1024,SSD,HDD,Nvidia,GeForce GTX 1060 +Dell,XPS 13,Ultrabook,13.3,8,Windows 10,1.21,1649.0,Full HD,1920,1080,No,Yes,No,Intel,1.8,Core i7 8550U,256,0,SSD,No,Intel,UHD Graphics 620 +Asus,FX550IK-DM018T (FX-9830P/8GB/1TB/Radeon,Gaming,15.6,8,Windows 10,2.45,699.0,Full HD,1920,1080,No,No,No,AMD,3.0,FX 9830P,1024,0,HDD,No,AMD,Radeon RX 560 +Acer,Aspire 5,Notebook,15.6,8,Windows 10,2.2,689.0,Full HD,1920,1080,No,No,No,Intel,1.8,Core i7 8550U,1024,0,HDD,No,Nvidia,GeForce MX150 +HP,Probook 430,Notebook,13.3,16,Windows 10,1.49,1197.0,Full HD,1920,1080,No,No,No,Intel,1.8,Core i7 8550U,512,0,SSD,No,Intel,UHD Graphics 620 +Dell,Inspiron 7577,Gaming,15.6,8,Windows 10,2.65,1195.0,Full HD,1920,1080,No,No,No,Intel,2.5,Core i5 7300HQ,256,0,SSD,No,Nvidia,GeForce GTX 1060 +Asus,Zenbook UX430UA,Ultrabook,14.0,8,Windows 10,1.25,1049.0,Full HD,1920,1080,No,No,No,Intel,2.7,Core i7 7500U,256,0,SSD,No,Intel,HD Graphics 620 +Acer,Spin 5,2 in 1 Convertible,13.3,8,Windows 10,1.5,847.0,Full HD,1920,1080,Yes,Yes,No,Intel,1.6,Core i5 8250U,256,0,SSD,No,Intel,UHD Graphics 620 +Dell,Inspiron 3567,Notebook,15.6,8,Linux,2.2,599.9,Full HD,1920,1080,No,No,No,Intel,2.7,Core i7 7500U,1024,0,HDD,No,AMD,Radeon R5 M430 +Dell,Inspiron 3567,Notebook,15.6,4,Linux,2.2,485.0,Full HD,1920,1080,No,No,No,Intel,2.0,Core i3 6006U,256,0,SSD,No,AMD,Radeon R5 M430 +Asus,X541UV-DM1439T (i3-7100U/6GB/256GB/GeForce,Notebook,15.6,6,Windows 10,2.0,577.0,Full HD,1920,1080,No,No,No,Intel,2.4,Core i3 7100U,256,0,SSD,No,Nvidia,GeForce 920M +HP,Omen 15-ce007nv,Gaming,15.6,12,Windows 10,2.62,1249.0,Full HD,1920,1080,No,Yes,No,Intel,2.8,Core i7 7700HQ,128,1024,SSD,HDD,Nvidia,GeForce GTX 1050 +HP,15-bs017nv (i7-7500U/8GB/256GB/Radeon,Notebook,15.6,8,Windows 10,1.91,719.0,Full HD,1920,1080,No,No,No,Intel,2.7,Core i7 7500U,256,0,SSD,No,AMD,Radeon 530 +HP,15-bw000nv (E2-9000e/4GB/500GB/Radeon,Notebook,15.6,4,Windows 10,2.1,349.0,Full HD,1920,1080,No,No,No,AMD,1.5,E-Series E2-9000e,500,0,HDD,No,AMD,Radeon R2 +Dell,Inspiron 3576,Notebook,15.6,8,Linux,2.2,647.0,Full HD,1920,1080,No,No,No,Intel,1.6,Core i5 8250U,1024,0,HDD,No,AMD,Radeon 520 +HP,Envy 13-ad009n,Ultrabook,13.3,8,Windows 10,1.38,1119.0,Full HD,1920,1080,No,Yes,No,Intel,2.7,Core i7 7500U,256,0,SSD,No,Nvidia,GeForce MX150 +Microsoft,Surface Laptop,Ultrabook,13.5,8,Windows 10 S,1.252,1340.0,Standard,2256,1504,Yes,No,No,Intel,2.5,Core i5 7200U,256,0,SSD,No,Intel,HD Graphics 620 +HP,Pavilion 14-BK001nv,Notebook,14.0,6,Windows 10,1.58,659.0,Full HD,1920,1080,No,Yes,No,Intel,2.5,Core i5 7200U,256,0,SSD,No,Nvidia,GeForce 940MX +Lenovo,Ideapad 310-15ISK,Notebook,15.6,4,Windows 10,1.85,414.9,Full HD,1920,1080,No,No,No,Intel,2.0,Core i3 6006U,1024,0,HDD,No,Intel,HD Graphics 520 +Asus,UX430UQ-GV209R (i7-7500U/8GB/256GB/GeForce,Ultrabook,14.0,8,Windows 10,1.3,1193.0,Full HD,1920,1080,No,Yes,No,Intel,2.7,Core i7 7500U,256,0,SSD,No,Nvidia,GeForce 940MX +MSI,GP62M 7REX,Gaming,15.6,16,Windows 10,2.2,1299.0,Full HD,1920,1080,No,No,No,Intel,2.8,Core i7 7700HQ,256,1024,SSD,HDD,Nvidia,GeForce GTX 1050 Ti +Lenovo,Thinkpad T470,Notebook,14.0,8,Windows 10,1.58,1480.0,Full HD,1920,1080,No,Yes,No,Intel,2.7,Core i7 7500U,256,0,SSD,No,Intel,HD Graphics 620 +Asus,VivoBook S15,Ultrabook,15.6,16,Windows 10,1.5,1262.0,Full HD,1920,1080,No,No,No,Intel,1.8,Core i7 8550U,256,1024,SSD,HDD,Nvidia,GeForce MX150 +Dell,XPS 13,Ultrabook,13.3,8,Windows 10,1.23,1379.0,Quad HD+,3200,1800,Yes,No,No,Intel,2.4,Core i7 7560U,256,0,SSD,No,Intel,Iris Plus Graphics 640 +Lenovo,ThinkPad Yoga,2 in 1 Convertible,13.3,8,Windows 10,1.37,1399.0,Full HD,1920,1080,Yes,Yes,No,Intel,2.5,Core i5 7200U,256,0,SSD,No,Intel,HD Graphics 620 +HP,Probook 440,Notebook,14.0,4,Windows 10,1.63,722.0,Standard,1366,768,No,Yes,No,Intel,1.6,Core i5 8250U,500,0,HDD,No,Intel,UHD Graphics 620 +Dell,XPS 13,Ultrabook,13.3,8,Windows 10,1.21,1629.0,Full HD,1920,1080,No,Yes,No,Intel,1.6,Core i5 8250U,256,0,SSD,No,Intel,UHD Graphics 620 +HP,Spectre x360,2 in 1 Convertible,13.3,8,Windows 10,1.26,1398.99,Full HD,1920,1080,Yes,Yes,No,Intel,1.6,Core i5 8250U,256,0,SSD,No,Intel,UHD Graphics 620 +HP,Probook 440,Notebook,14.0,8,Windows 10,1.63,1084.0,Full HD,1920,1080,No,No,No,Intel,1.8,Core i7 8550U,512,0,SSD,No,Intel,UHD Graphics 620 +Dell,Inspiron 7570,Notebook,15.6,8,Windows 10,2.16,1130.33,Full HD,1920,1080,No,Yes,No,Intel,1.8,Core i7 8550U,256,1024,SSD,HDD,Nvidia,GeForce 940MX +Asus,X705UV-BX074T (i3-6006U/4GB/1TB/GeForce,Notebook,17.3,4,Windows 10,2.0,564.0,Full HD,1920,1080,No,No,No,Intel,2.0,Core i3 6006U,1024,0,HDD,No,Nvidia,GeForce 920MX +Asus,VivoBook S15,Notebook,15.6,8,Windows 10,1.7,1118.0,Full HD,1920,1080,No,No,No,Intel,1.8,Core i7 8550U,256,0,SSD,No,Nvidia,GeForce 940MX +Acer,Spin 3,Notebook,15.6,6,Windows 10,2.1,479.0,Full HD,1920,1080,Yes,Yes,No,Intel,2.4,Core i3 7100U,1024,0,HDD,No,Intel,HD Graphics 620 +MSI,GS63VR 7RG,Gaming,15.6,16,Windows 10,1.8,2241.5,Full HD,1920,1080,No,No,No,Intel,2.8,Core i7 7700HQ,256,2048,SSD,HDD,Nvidia,GeForce GTX 1070 +Lenovo,IdeaPad 320-15IKBN,Notebook,15.6,8,No OS,2.2,629.0,Full HD,1920,1080,No,No,No,Intel,2.5,Core i5 7200U,256,0,SSD,No,Nvidia,GeForce 940MX +HP,Probook 470,Notebook,17.3,16,Windows 10,2.5,1271.0,Full HD,1920,1080,No,No,No,Intel,1.8,Core i7 8550U,512,0,SSD,No,Nvidia,GeForce 930MX +Acer,Aspire 3,Notebook,15.6,4,Windows 10,2.1,451.0,Standard,1366,768,No,No,No,AMD,3.0,A9-Series 9420,256,0,SSD,No,AMD,Radeon R5 +HP,250 G6,Notebook,15.6,4,No OS,1.86,259.0,Standard,1366,768,No,No,No,Intel,1.6,Celeron Dual Core N3060,500,0,HDD,No,Intel,HD Graphics 400 +HP,Probook 440,Notebook,14.0,8,Windows 10,1.63,812.0,Full HD,1920,1080,No,No,No,Intel,1.6,Core i5 8250U,1024,0,HDD,No,Intel,UHD Graphics 620 +Asus,E402WA-GA007T (E2-6110/4GB/64GB/W10,Notebook,14.0,4,Windows 10 S,1.65,277.99,Standard,1366,768,No,No,No,AMD,1.5,E-Series 6110,64,0,SSD,No,AMD,Radeon R2 +Dell,Inspiron 5770,Notebook,17.3,16,Windows 10,2.8,1396.0,Full HD,1920,1080,No,No,No,Intel,1.8,Core i7 8550U,256,2048,SSD,HDD,AMD,Radeon 530 +HP,ProBook 470,Notebook,17.3,8,Windows 10,2.5,928.0,Full HD,1920,1080,No,No,No,Intel,1.6,Core i5 8250U,256,0,SSD,No,Intel,UHD Graphics 620 +Dell,Inspiron 5567,Notebook,15.6,8,Windows 10,2.36,638.99,Standard,1366,768,No,No,No,Intel,2.5,Core i5 7200U,1024,0,HDD,No,AMD,Radeon R7 M445 +Dell,Inspiron 3567,Notebook,15.6,4,Windows 10,2.2,449.0,Full HD,1920,1080,No,No,No,Intel,2.0,Core i3 6006U,1024,0,HDD,No,AMD,Radeon R5 M430 +Acer,Swift 3,Ultrabook,14.0,8,Windows 10,1.6,884.0,Full HD,1920,1080,No,Yes,No,Intel,1.8,Core i7 8550U,256,0,SSD,No,Intel,UHD Graphics 620 +Acer,Aspire A515-51G-37JS,Notebook,15.6,4,Windows 10,2.2,572.0,Full HD,1920,1080,No,No,No,Intel,2.7,Core i3 7130U,256,0,SSD,No,Nvidia,GeForce MX130 +HP,15-BS078nr (i7-7500U/8GB/1TB/W10),Notebook,15.6,8,Windows 10,2.05,598.0,Standard,1366,768,No,No,No,Intel,2.7,Core i7 7500U,1024,0,HDD,No,Intel,HD Graphics 620 +HP,Probook 440,Notebook,14.0,8,Windows 10,1.63,988.0,Full HD,1920,1080,No,No,No,Intel,1.8,Core i7 8550U,256,0,SSD,No,Intel,UHD Graphics 620 +Lenovo,V110-15IAP (N3350/4GB/1TB/No,Notebook,15.6,4,No OS,1.9,252.36,Standard,1366,768,No,No,No,Intel,1.1,Celeron Dual Core N3350,1024,0,HDD,No,Intel,HD Graphics 500 +Asus,FX753VD-GC086T (i5-7300HQ/8GB/1TB,Gaming,17.3,8,Windows 10,3.0,938.0,Full HD,1920,1080,No,No,No,Intel,2.5,Core i5 7300HQ,128,1024,SSD,HDD,Nvidia,GeForce GTX 1050 +Lenovo,IdeaPad 320-15IKBN,Notebook,15.6,4,No OS,2.2,499.0,Full HD,1920,1080,No,No,No,Intel,2.5,Core i5 7200U,1024,0,HDD,No,Nvidia,GeForce 920MX +HP,Envy 13-AD007nv,Notebook,13.3,4,Windows 10,1.32,699.0,Full HD,1920,1080,No,Yes,No,Intel,2.5,Core i5 7200U,256,0,SSD,No,Intel,HD Graphics 620 +Acer,Aspire 5,Notebook,17.3,4,Windows 10,3.0,655.0,Full HD,1920,1080,No,Yes,No,Intel,2.7,Core i3 7130U,1024,0,HDD,No,Nvidia,GeForce MX130 +Lenovo,ThinkPad E480,Notebook,14.0,8,Windows 10,1.75,1116.02,Full HD,1920,1080,No,Yes,No,Intel,1.6,Core i5 8250U,256,0,SSD,No,AMD,Radeon RX 550 +Lenovo,Legion Y520-15IKBN,Gaming,15.6,8,No OS,2.4,869.0,Full HD,1920,1080,No,Yes,No,Intel,2.8,Core i7 7700HQ,256,0,SSD,No,Nvidia,GeForce GTX 1050M +Toshiba,Satellite Pro,Notebook,15.6,4,Windows 10,2.1,602.0,Standard,1366,768,No,No,No,Intel,2.3,Core i5 6200U,500,0,HDD,No,Intel,HD Graphics 520 +HP,255 G6,Notebook,15.6,4,Windows 10,1.86,369.0,Standard,1366,768,No,No,No,AMD,2.5,A6-Series 9220,256,0,SSD,No,AMD,Radeon R4 Graphics +Asus,ZenBook UX430UA,Ultrabook,14.0,8,Windows 10,1.25,1099.0,Full HD,1920,1080,No,No,No,Intel,1.8,Core i7 8550U,256,0,SSD,No,Intel,UHD Graphics 620 +HP,EliteBook Folio,Ultrabook,12.5,8,Windows 10,0.97,2014.0,4K Ultra HD,3840,2160,Yes,Yes,No,Intel,1.2,Core M 6Y75,512,0,SSD,No,Intel,HD Graphics 515 +Asus,X541NA (N3350/4GB/1TB/FHD/W10),Notebook,15.6,4,Windows 10,2.0,344.0,Full HD,1920,1080,No,No,No,Intel,1.1,Celeron Dual Core N3350,1024,0,HDD,No,Intel,HD Graphics 500 +MSI,GE72MVR 7RG,Gaming,17.3,16,Windows 10,2.9,2029.0,Full HD,1920,1080,No,No,No,Intel,2.8,Core i7 7700HQ,256,1024,SSD,HDD,Nvidia,GeForce GTX 1070 +Acer,Aspire A315-51,Notebook,15.6,4,Windows 10,2.1,447.0,Standard,1366,768,No,No,No,Intel,2.0,Core i3 6006U,1024,0,HDD,No,Intel,HD Graphics 520 +Dell,Inspiron 5577,Gaming,15.6,16,Windows 10,2.56,1249.26,Full HD,1920,1080,No,No,No,Intel,2.8,Core i7 7700HQ,512,0,SSD,No,Nvidia,GeForce GTX 1050 +Dell,Inspiron 7567,Gaming,15.6,8,Windows 10,2.62,899.0,Full HD,1920,1080,No,No,No,Intel,2.8,Core i7 7700HQ,1024,0,Hybrid,No,Nvidia,GeForce GTX 1050 +Lenovo,V110-15IKB (i5-7200U/4GB/128GB/W10),Notebook,15.6,4,Windows 10,1.9,498.0,Standard,1366,768,No,No,No,Intel,2.5,Core i5 7200U,128,0,SSD,No,Intel,HD Graphics 620 +MSI,GE73VR 7RE,Gaming,17.3,16,Windows 10,2.8,1890.0,Full HD,1920,1080,No,No,No,Intel,2.8,Core i7 7700HQ,256,1024,SSD,HDD,Nvidia,GeForce GTX 1060 +HP,EliteBook 840,Ultrabook,14.0,4,Windows 10,1.48,1082.0,Full HD,1920,1080,No,No,No,Intel,2.7,Core i5 7500U,256,0,SSD,No,Intel,HD Graphics 620 +HP,15-BS103nv (i5-8250U/6GB/256GB/Radeon,Notebook,15.6,6,Windows 10,1.91,619.0,Full HD,1920,1080,No,No,No,Intel,1.6,Core i5 8250U,256,0,SSD,No,AMD,Radeon 520 +Lenovo,Yoga 520-14IKB,2 in 1 Convertible,14.0,4,Windows 10,1.74,629.0,Full HD,1920,1080,Yes,Yes,No,Intel,2.4,Core i3 7100U,256,0,SSD,No,Intel,HD Graphics 620 +Asus,ZenBook Flip,2 in 1 Convertible,13.3,8,Windows 10,1.1,1315.0,Full HD,1920,1080,Yes,No,No,Intel,1.6,Core i5 8250U,256,0,SSD,No,Intel,HD Graphics 620 +Dell,Inspiron 5579,2 in 1 Convertible,15.6,8,Windows 10,1.56,1049.0,Full HD,1920,1080,Yes,No,No,Intel,1.8,Core i7 8550U,256,0,SSD,No,Intel,UHD Graphics 620 +Toshiba,Satellite Pro,Notebook,15.6,4,Windows 10,2.1,447.0,Standard,1366,768,No,No,No,Intel,2.2,Core i3 6006U,500,0,HDD,No,Intel,HD Graphics 520 +Asus,X555BP-XX180T (A9-9420/4GB/1TB/Radeon,Notebook,15.6,4,Windows 10,2.03,403.0,Standard,1366,768,No,No,No,AMD,3.0,A9-Series 9420,1024,0,HDD,No,AMD,Radeon R5 M420 +Acer,Aspire A517-51G,Notebook,17.3,4,Windows 10,3.0,805.0,Full HD,1920,1080,No,Yes,No,Intel,1.6,Core i5 8250U,256,0,SSD,No,Nvidia,GeForce MX150 +Dell,Inspiron 3576,Notebook,15.6,8,Windows 10,2.13,728.0,Full HD,1920,1080,No,No,No,Intel,1.6,Core i5 8250U,256,0,SSD,No,AMD,Radeon 520 +Lenovo,Legion Y520-15IKBN,Gaming,15.6,16,Windows 10,2.5,1079.0,Full HD,1920,1080,No,Yes,No,Intel,2.8,Core i7 7700HQ,256,0,SSD,No,Nvidia,GeForce GTX 1050 Ti +Acer,Aspire A315-31,Notebook,15.6,4,Windows 10,2.1,348.0,Standard,1366,768,No,No,No,Intel,1.1,Celeron Dual Core N3350,1024,0,HDD,No,Intel,HD Graphics 500 +MSI,GE63VR 7RE,Gaming,15.6,16,Windows 10,2.4,1799.0,Full HD,1920,1080,No,Yes,No,Intel,2.8,Core i7 7700HQ,256,1024,SSD,HDD,Nvidia,GeForce GTX 1060 +Acer,Aspire 3,Notebook,15.6,4,Windows 10,2.1,363.51,Standard,1366,768,No,No,No,Intel,1.1,Pentium Quad Core N4200,1024,0,HDD,No,Intel,HD Graphics 505 +Dell,Inspiron 5577,Gaming,15.6,8,Windows 10,2.56,1060.49,Full HD,1920,1080,No,No,No,Intel,2.8,Core i7 7700HQ,128,1024,SSD,HDD,Nvidia,GeForce GTX 1050 +Acer,Aspire A517-51G,Notebook,17.3,8,Windows 10,3.0,854.0,Full HD,1920,1080,No,Yes,No,Intel,1.6,Core i5 8250U,256,0,SSD,No,Nvidia,GeForce MX150 +HP,ProBook 430,Notebook,13.3,4,Windows 10,1.49,754.0,Full HD,1920,1080,No,Yes,No,Intel,1.6,Core i5 8250U,500,0,HDD,No,Intel,UHD Graphics 620 +Huawei,MateBook X,Ultrabook,13.0,8,Windows 10,1.05,1349.0,Full HD,2160,1440,No,Yes,No,Intel,2.5,Core i5 7200U,256,0,SSD,No,Intel,HD Graphics 620 +HP,17-bs001nv (i5-7200U/6GB/2TB/Radeon,Notebook,17.3,6,Windows 10,2.71,699.0,Full HD,1920,1080,No,Yes,No,Intel,2.5,Core i5 7200U,2048,0,HDD,No,AMD,Radeon 520 +Lenovo,IdeaPad 320-15AST,Notebook,15.6,4,No OS,2.2,309.0,Standard,1366,768,No,No,No,AMD,2.9,A6-Series 9220,500,0,HDD,No,AMD,Radeon R4 Graphics +Toshiba,Satellite Pro,Notebook,15.6,4,Windows 10,2.0,489.0,Standard,1366,768,No,No,No,Intel,2.4,Core i3 7100U,500,0,HDD,No,Intel,HD Graphics 620 +HP,ProBook 470,Notebook,17.3,8,Windows 10,2.5,923.0,Full HD,1920,1080,No,No,No,Intel,1.6,Core i5 8250U,256,0,SSD,No,Nvidia,GeForce 930MX +Dell,Inspiron 3567,Notebook,15.6,8,Windows 10,2.3,459.0,Standard,1366,768,No,No,No,Intel,2.4,Core i3 7100U,1024,0,HDD,No,Intel,HD Graphics 620 +Acer,Aspire A315-51,Notebook,15.6,4,Windows 10,2.1,449.0,Standard,1366,768,No,No,No,Intel,2.0,Core i3 6006U,128,0,SSD,No,Intel,HD Graphics 520 +MSI,GT80S 6QF-074US,Gaming,18.4,32,Windows 10,4.4,2799.0,Full HD,1920,1080,No,No,No,Intel,2.9,Core i7 6920HQ,512,1024,SSD,HDD,Nvidia,GTX 980 SLI +Lenovo,V310-15IKB (i5-7200U/8GB/1TB,Notebook,15.6,8,Windows 10,1.9,813.0,Full HD,1920,1080,No,No,No,Intel,2.5,Core i5 7200U,128,1024,SSD,HDD,AMD,R17M-M1-70 +HP,Spectre x360,2 in 1 Convertible,13.3,8,Windows 10,1.29,1499.0,4K Ultra HD,3840,2160,Yes,Yes,No,Intel,1.6,Core i5 8250U,256,0,SSD,No,Intel,UHD Graphics 620 +Dell,Inspiron 5570,Notebook,15.6,16,Linux,2.02,1049.0,Full HD,1920,1080,No,No,No,Intel,1.8,Core i7 8550U,256,2048,SSD,HDD,AMD,Radeon 530 +Dell,XPS 13,Ultrabook,13.3,8,Windows 10,1.23,1399.0,Full HD,1920,1080,No,No,No,Intel,1.6,Core i5 8250U,256,0,SSD,No,Intel,UHD Graphics 620 +Lenovo,Yoga 920-13IKB,2 in 1 Convertible,13.9,16,Windows 10,1.4,1849.0,4K Ultra HD,3840,2160,Yes,Yes,No,Intel,1.8,Core i7 8550U,512,0,SSD,No,Intel,UHD Graphics 620 +Toshiba,Satellite Pro,Notebook,15.6,8,Windows 10,2.0,793.0,Standard,1366,768,No,No,No,Intel,2.5,Core i5 7200U,128,0,SSD,No,Intel,HD Graphics 620 +Xiaomi,Mi Notebook,Notebook,15.6,8,No OS,1.95,1199.0,Full HD,1920,1080,No,Yes,No,Intel,1.6,Core i5 8250U,256,0,SSD,No,Nvidia,GeForce MX150 +Dell,Inspiron 7773,Notebook,17.3,16,Windows 10,2.77,1549.0,Full HD,1920,1080,Yes,No,No,Intel,1.8,Core i7 8550U,512,0,SSD,No,Nvidia,GeForce 150MX +Dell,XPS 15,Notebook,15.6,16,Windows 10,2.06,2397.0,4K Ultra HD,3840,2160,Yes,No,No,Intel,2.8,Core i7 7700HQ,512,0,SSD,No,Nvidia,GeForce GTX 1050 +Lenovo,Legion Y520-15IKBN,Gaming,15.6,8,No OS,2.4,779.0,Full HD,1920,1080,No,Yes,No,Intel,2.5,Core i5 7300HQ,256,0,SSD,No,Nvidia,GeForce GTX 1050 +Acer,Swift 7,Ultrabook,13.3,8,Windows 10,1.12,989.0,Full HD,1920,1080,No,Yes,No,Intel,1.2,Core i5 7Y54,256,0,SSD,No,Intel,HD Graphics 615 +Dell,Inspiron 5770,Notebook,17.3,8,Windows 10,2.8,1085.0,Full HD,1920,1080,No,No,No,Intel,1.8,Core i7 8550U,128,1024,SSD,HDD,AMD,Radeon 530 +Lenovo,Thinkpad Yoga,2 in 1 Convertible,14.0,16,Windows 10,1.42,2824.0,Standard,2560,1440,Yes,No,No,Intel,2.7,Core i7 7500U,1024,0,SSD,No,Intel,HD Graphics 620 +Vero,K147 (N3350/4GB/32GB/FHD/W10),Notebook,14.0,4,Windows 10,1.3,260.0,Full HD,1920,1080,No,Yes,No,Intel,1.1,Celeron Dual Core N3350,32,0,Flash Storage,No,Intel,HD Graphics 500 +Xiaomi,Mi Notebook,Ultrabook,13.3,8,No OS,1.3,999.9,Full HD,1920,1080,No,Yes,No,Intel,2.5,Core i5 7200U,256,0,SSD,No,Nvidia,GeForce MX150 +Lenovo,IdeaPad 320-17IKBR,Notebook,17.3,8,No OS,2.8,698.0,Standard,1600,900,No,No,No,Intel,1.6,Core i5 8250U,256,0,SSD,No,Nvidia,GeForce MX150 +Dell,Inspiron 5379,2 in 1 Convertible,13.3,8,Windows 10,1.62,839.0,Full HD,1920,1080,Yes,Yes,No,Intel,1.8,Core i7 8550U,1024,0,HDD,No,Intel,UHD Graphics 620 +HP,ProBook 470,Notebook,17.3,8,Windows 10,2.5,914.0,Full HD,1920,1080,No,Yes,No,Intel,1.6,Core i5 8250U,1024,0,HDD,No,Nvidia,GeForce 930MX +Razer,Blade Pro,Gaming,17.3,32,Windows 10,3.49,6099.0,4K Ultra HD,3840,2160,Yes,No,No,Intel,2.9,Core i7 7820HK,1024,0,SSD,No,Nvidia,GeForce GTX 1080 +HP,ProBook 430,Notebook,13.3,8,Windows 10,1.49,959.0,Full HD,1920,1080,No,No,No,Intel,1.6,Core i5 8250U,512,0,SSD,No,Intel,UHD Graphics 620 +HP,Omen 17-W295,Gaming,17.3,16,Windows 10,3.35,1379.0,Full HD,1920,1080,No,Yes,No,Intel,2.8,Core i7 7700HQ,256,1024,SSD,HDD,Nvidia,GeForce GTX 1050 +HP,Probook 470,Notebook,17.3,8,Windows 10,2.5,1045.0,Full HD,1920,1080,No,No,No,Intel,1.8,Core i7 8550U,256,0,SSD,No,Nvidia,GeForce 930MX +Dell,Inspiron 7577,Gaming,15.6,16,Windows 10,2.65,1845.0,4K Ultra HD,3840,2160,No,Yes,No,Intel,2.8,Core i7 7700HQ,512,1024,SSD,HDD,Nvidia,GeForce GTX 1060 +Lenovo,V110-15ISK (i5-6200U/4GB/128GB/W10),Notebook,15.6,4,Windows 10,2.1,493.0,Standard,1366,768,No,No,No,Intel,2.3,Core i5 6200U,128,0,SSD,No,Intel,HD Graphics 520 +Acer,Aspire E5-576G,Notebook,15.6,8,Windows 10,2.23,742.0,Full HD,1920,1080,No,No,No,Intel,2.7,Core i7 7500U,1024,0,HDD,No,Nvidia,GeForce 940MX +Lenovo,Legion Y720-15IKB,Gaming,15.6,16,Windows 10,3.2,1749.0,Full HD,1920,1080,No,Yes,No,Intel,2.8,Core i7 7700HQ,512,1024,SSD,HDD,Nvidia,GeForce GTX 1060 +Dell,Precision 7520,Workstation,15.6,16,Windows 10,2.8,3055.0,4K Ultra HD,3840,2160,No,No,No,Intel,3.0,Xeon E3-1505M V6,256,1024,SSD,HDD,Nvidia,Quadro M1200 +Lenovo,Legion Y520-15IKBN,Gaming,15.6,16,No OS,2.4,1398.0,Full HD,1920,1080,No,No,No,Intel,2.8,Core i7 7700HQ,512,0,SSD,No,Nvidia,GeForce GTX 1060 +Dell,Inspiron 3567,Notebook,15.6,6,Windows 10,2.3,439.0,Standard,1366,768,Yes,No,No,Intel,2.4,Core i3 7100U,1024,0,HDD,No,Intel,HD Graphics 620 +Dell,XPS 13,Ultrabook,13.3,8,Windows 10,1.21,1949.0,4K Ultra HD,3840,2160,Yes,Yes,No,Intel,1.8,Core i7 8550U,256,0,SSD,No,Intel,UHD Graphics 620 +Dell,XPS 13,Ultrabook,13.3,8,Windows 10,1.2,1449.0,Full HD,1920,1080,No,No,No,Intel,1.8,Core i7 8550U,256,0,SSD,No,Intel,UHD Graphics 620 +Lenovo,IdeaPad 320-15IKBN,Notebook,15.6,8,Windows 10,2.2,597.0,Standard,1366,768,No,No,No,Intel,2.5,Core i5 7200U,256,0,SSD,No,Intel,HD Graphics 620 +Acer,Aspire 7,Notebook,15.6,8,Linux,2.4,779.0,Full HD,1920,1080,No,No,No,Intel,2.8,Core i7 7700HQ,1024,0,HDD,No,Nvidia,GeForce GTX 1050 +Asus,ROG GL703VD-GC028T,Gaming,17.3,16,Windows 10,2.9,1407.0,Full HD,1920,1080,No,No,No,Intel,2.8,Core i7 7700HQ,256,1024,SSD,HDD,Nvidia,GeForce GTX 1050 +HP,15-bs018nq (i3-6006U/4GB/500GB/FHD/No,Notebook,15.6,4,No OS,2.1,349.0,Full HD,1920,1080,No,No,No,Intel,2.0,Core i3 6006U,500,0,HDD,No,Intel,HD Graphics 520 +Lenovo,IdeaPad 320-15IKBN,Notebook,15.6,8,No OS,2.2,549.0,Full HD,1920,1080,No,No,No,Intel,2.5,Core i5 7200U,256,0,SSD,No,Intel,HD Graphics 620 +Huawei,MateBook X,Ultrabook,13.0,8,Windows 10,1.05,1499.0,Full HD,2160,1440,No,Yes,No,Intel,2.7,Core i7 7500U,512,0,SSD,No,Intel,HD Graphics 620 +Dell,Inspiron 5370,Ultrabook,13.3,8,Windows 10,1.4,931.88,Full HD,1920,1080,No,Yes,No,Intel,1.8,Core i7 8550U,256,0,SSD,No,AMD,Radeon 530 +Lenovo,IdeaPad 320-17IKB,Notebook,17.3,8,No OS,2.8,589.0,Standard,1600,900,No,No,No,Intel,2.5,Core i5 7200U,1024,0,HDD,No,Nvidia,GeForce GTX 940MX +HP,Probook 440,Notebook,14.0,8,Windows 10,1.63,1031.0,Full HD,1920,1080,No,No,No,Intel,1.8,Core i7 8550U,256,0,SSD,No,Nvidia,GeForce 930MX +Dell,Latitude 5490,Ultrabook,14.0,8,Windows 10,1.6,1149.0,Full HD,1920,1080,No,No,No,Intel,1.6,Core i5 8250U,256,0,SSD,No,Intel,UHD Graphics 620 +Dell,Inspiron 5379,2 in 1 Convertible,13.3,16,Windows 10,1.62,1279.0,Full HD,1920,1080,Yes,No,No,Intel,1.8,Core i7 8550U,512,0,SSD,No,Intel,UHD Graphics 620 +Dell,Inspiron 3576,Notebook,15.6,8,Linux,2.2,677.35,Full HD,1920,1080,No,No,No,Intel,1.6,Core i5 8250U,256,0,SSD,No,AMD,Radeon 520 +Lenovo,Yoga 520-14IKB,2 in 1 Convertible,14.0,8,Windows 10,1.74,899.0,Full HD,1920,1080,No,Yes,No,Intel,1.6,Core i5 8250U,256,0,SSD,No,Intel,UHD Graphics 620 +Toshiba,Portege Z30-C-16L,Ultrabook,13.3,8,Windows 10,1.2,1363.0,Full HD,1920,1080,No,No,No,Intel,2.5,Core i7 6500U,256,0,SSD,No,Intel,HD Graphics 520 +HP,ProBook 450,Notebook,15.6,8,Windows 10,2.1,794.0,Full HD,1920,1080,No,No,No,Intel,1.6,Core i5 8250U,1024,0,HDD,No,Intel,UHD Graphics 620 +Dell,Alienware 17,Gaming,17.3,16,Windows 10,4.42,2456.34,Full HD,1920,1080,No,Yes,No,Intel,2.8,Core i7 7700HQ,256,1024,SSD,HDD,Nvidia,GeForce GTX 1060 +Acer,Aspire E5-576G,Notebook,15.6,8,Windows 10,2.2,832.0,Full HD,1920,1080,No,No,No,Intel,2.7,Core i7 7500U,256,0,SSD,No,Nvidia,GeForce 940MX +Dell,Inspiron 5567,Notebook,15.6,16,Windows 10,2.3,859.01,Full HD,1920,1080,Yes,No,No,Intel,2.7,Core i7 7500U,1024,0,HDD,No,AMD,Radeon R7 M445 +Asus,Vivobook X541UV-DM1217T,Notebook,15.6,8,Windows 10,2.0,769.0,Full HD,1920,1080,No,No,No,Intel,2.5,Core i5 7200U,256,0,SSD,No,Nvidia,GeForce 920MX +Asus,K756UX-T4340T (i5-7200U/8GB/500GB,Notebook,17.3,8,Windows 10,2.69,891.0,Full HD,1920,1080,No,No,No,Intel,2.5,Core i5 7200U,256,500,SSD,HDD,Nvidia,GeForce GTX 950M +HP,ZBook 15u,Notebook,15.6,8,Windows 10,1.9,1269.0,Full HD,1920,1080,No,No,No,Intel,2.7,Core i7 7500U,1024,0,HDD,No,AMD,FirePro W4190M +Asus,Pro P2540UA-XO0198T,Notebook,15.6,4,Windows 10,2.37,398.99,Standard,1366,768,No,No,No,Intel,2.4,Core i3 7100U,1024,0,HDD,No,Intel,HD Graphics 620 +HP,15-rb013nv (E2-9000e/4GB/500GB/W10),Notebook,15.6,4,Windows 10,2.1,330.0,Standard,1366,768,No,No,No,AMD,1.5,E-Series 9000e,500,0,HDD,No,AMD,Radeon R2 +Lenovo,Legion Y720-15IKB,Gaming,15.6,16,Windows 10,3.2,1499.0,Full HD,1920,1080,No,Yes,No,Intel,2.8,Core i7 7700HQ,256,1024,SSD,HDD,Nvidia,GeForce GTX 1060 +Dell,Vostro 5468,Notebook,14.0,8,Windows 10,1.6,859.0,Full HD,1920,1080,No,No,No,Intel,2.5,Core i5 7200U,256,0,SSD,No,Intel,HD Graphics 620 +Acer,Aspire R7,2 in 1 Convertible,13.3,8,Windows 10,1.6,689.0,Full HD,1920,1080,Yes,Yes,No,Intel,2.3,Core i5 6200U,256,0,SSD,No,Intel,HD Graphics 520 +Dell,Inspiron 5567,Notebook,15.6,16,Linux,2.36,899.0,Full HD,1920,1080,No,No,No,Intel,2.7,Core i7 7500U,256,0,SSD,No,AMD,Radeon R7 M445 +Acer,Aspire A315-51,Notebook,15.6,4,Linux,2.1,390.0,Standard,1366,768,No,No,No,Intel,2.0,Core i3 6006U,1024,0,HDD,No,Intel,HD Graphics 520 +Asus,X555QG-DM242T (A10-9620P/4GB/1TB,Notebook,15.6,4,Windows 10,2.2,575.0,Full HD,1920,1080,No,No,No,AMD,2.5,A10-Series A10-9620P,128,1024,SSD,HDD,AMD,Radeon R5 M430 +Asus,ROG G703VI-E5062T,Gaming,17.3,32,Windows 10,4.7,3890.0,Full HD,1920,1080,No,No,No,Intel,2.9,Core i7 7820HK,512,1024,SSD,HDD,Nvidia,GeForce GTX 1080 +Acer,Nitro AN515-51,Gaming,15.6,8,Windows 10,2.5,846.0,Full HD,1920,1080,No,Yes,No,Intel,2.5,Core i5 7300HQ,256,0,SSD,No,Nvidia,GeForce GTX 1050 +Lenovo,IdeaPad 320-15ISK,Notebook,15.6,8,Windows 10,2.2,589.0,Standard,1366,768,No,No,No,Intel,2.0,Core i3 6006U,128,0,SSD,No,Intel,HD Graphics 520 +Asus,VivoBook Pro,Notebook,17.3,8,Windows 10,2.1,1145.0,Full HD,1920,1080,No,No,No,Intel,1.8,Core i7 8550U,128,1024,SSD,HDD,Nvidia,GeForce 150MX +Asus,F756UX-T4201D (i7-7500U/8GB/128GB,Notebook,17.3,8,No OS,2.69,889.0,Full HD,1920,1080,No,No,No,Intel,2.7,Core i7 7500U,128,1024,SSD,HDD,Nvidia,GeForce GTX 950M +Dell,Inspiron 5577,Gaming,15.6,8,Windows 10,2.56,879.0,Full HD,1920,1080,No,No,No,Intel,2.5,Core i5 7300HQ,256,0,SSD,No,Nvidia,GeForce GTX 1050 +Lenovo,Yoga 910-13IKB,2 in 1 Convertible,13.9,8,Windows 10,1.38,1079.0,Full HD,1920,1080,Yes,Yes,No,Intel,2.7,Core i7 7500U,256,0,SSD,No,Intel,HD Graphics 620 +Dell,Inspiron 5570,Notebook,15.6,8,Windows 10,2.2,985.0,Full HD,1920,1080,No,No,No,Intel,1.8,Core i7 8550U,128,2048,SSD,HDD,AMD,Radeon 530 +HP,15-bs015dx (i5-7200U/8GB/1TB/W10),Notebook,15.6,8,Windows 10,2.04,559.0,Standard,1366,768,Yes,No,No,Intel,2.5,Core i5 7200U,1024,0,HDD,No,Intel,HD Graphics 620 +Asus,Rog G701VIK-BA060T,Gaming,17.3,16,Windows 10,3.6,2999.0,Full HD,1920,1080,No,No,No,Intel,2.9,Core i7 7820HK,256,0,SSD,No,Nvidia,GeForce GTX 1080 +HP,ProBook 430,Notebook,13.3,4,Windows 10,1.49,675.0,Full HD,1920,1080,No,Yes,No,Intel,1.6,Core i5 8250U,500,0,HDD,No,Intel,UHD Graphics 620 +Apple,MacBook Pro,Ultrabook,13.3,8,macOS,1.37,2040.0,Standard,2560,1600,No,Yes,Yes,Intel,3.1,Core i5,512,0,SSD,No,Intel,Iris Plus Graphics 650 +Dell,Inspiron 5579,2 in 1 Convertible,15.6,8,Windows 10,2.08,819.0,Full HD,1920,1080,Yes,Yes,No,Intel,1.8,Core i7 8550U,1024,0,HDD,No,Intel,UHD Graphics 620 +Asus,ROG G752VSK-GC493T,Gaming,17.3,16,Windows 10,4.3,1799.0,Full HD,1920,1080,No,No,No,Intel,2.8,Core i7 7700HQ,256,1024,SSD,HDD,Nvidia,GeForce GTX 980M +Asus,X505BP-BR019T (A9-9420/4GB/1TB/Radeon,Notebook,15.6,4,Windows 10,1.68,469.0,Standard,1366,768,No,No,No,AMD,3.0,A9-Series 9420,1024,0,HDD,No,AMD,Radeon R5 M420 +Lenovo,Yoga 920-13IKB,2 in 1 Convertible,13.9,8,Windows 10,1.37,1849.0,Full HD,1920,1080,Yes,Yes,No,Intel,1.8,Core i7 8550U,512,0,SSD,No,Intel,UHD Graphics 620 +Acer,Aspire 5,Notebook,17.3,4,Windows 10,3.0,702.0,Full HD,1920,1080,No,Yes,No,Intel,2.7,Core i3 7130U,256,0,SSD,No,Nvidia,GeForce MX130 +Dell,Vostro 5370,Ultrabook,13.3,8,Windows 10,1.41,949.0,Full HD,1920,1080,No,No,No,Intel,1.6,Core i5 8250U,256,0,SSD,No,Intel,UHD Graphics 620 +HP,15-BW094nd (A6-9220/8GB/128GB/W10),Notebook,15.6,8,Windows 10,1.91,445.9,Standard,1366,768,No,No,No,AMD,2.5,A6-Series A6-9220,128,0,SSD,No,AMD,Radeon R4 Graphics +HP,Envy 17-U275cl,Notebook,17.3,16,Windows 10,2.9,1059.0,Full HD,1920,1080,No,Yes,No,Intel,1.8,Core i7 8550U,1024,0,HDD,No,Nvidia,GeForce MX150 +MSI,GT73EVR 7RE,Gaming,17.3,16,Windows 10,4.14,2499.0,Full HD,1920,1080,No,No,No,Intel,2.8,Core i7 7700HQ,512,1024,SSD,HDD,Nvidia,GeForce GTX 1070 +Lenovo,Yoga 720-15IKB,2 in 1 Convertible,15.6,8,Windows 10,2.0,1699.0,Full HD,1920,1080,Yes,Yes,No,Intel,2.8,Core i7 7700HQ,512,0,SSD,No,Nvidia,GeForce GTX 1050M +Dell,Inspiron 5770,Notebook,17.3,8,Windows 10,2.8,1142.0,Full HD,1920,1080,No,No,No,Intel,1.8,Core i7 8550U,128,1024,SSD,HDD,AMD,Radeon 530 +Lenovo,IdeaPad 320-15ISK,Notebook,15.6,4,No OS,2.2,444.0,Full HD,1920,1080,No,No,No,Intel,2.0,Core i3 6006U,256,0,SSD,No,Intel,HD Graphics 520 +HP,ProBook 450,Notebook,15.6,4,Windows 10,2.1,722.0,Full HD,1920,1080,No,Yes,No,Intel,1.6,Core i5 8250U,500,0,HDD,No,Intel,HD Graphics 620 +Dell,Vostro 3568,Notebook,15.6,4,Windows 10,2.18,657.0,Full HD,1920,1080,No,No,No,Intel,2.5,Core i5 7200U,1024,0,HDD,No,Intel,HD Graphics 620 +Dell,Inspiron 3567,Notebook,15.6,8,Windows 10,2.24,565.0,Full HD,1920,1080,No,No,No,Intel,2.5,Core i5 7200U,1024,0,HDD,No,AMD,Radeon R5 M430 +Dell,Inspiron 5579,2 in 1 Convertible,15.6,8,Windows 10,2.67,799.0,Full HD,1920,1080,Yes,No,No,Intel,1.6,Core i5 8250U,256,0,SSD,No,Intel,UHD Graphics 620 +Asus,ZenBook Flip,2 in 1 Convertible,13.3,8,Windows 10,1.1,1499.0,Full HD,1920,1080,Yes,No,No,Intel,1.8,Core i7 8550U,512,512,SSD,SSD,Intel,UHD Graphics 620 +Lenovo,IdeaPad 320-15IKBN,Notebook,15.6,4,No OS,2.2,467.0,Full HD,1920,1080,No,No,No,Intel,2.5,Core i5 7200U,1024,0,HDD,No,Intel,HD Graphics 620 +HP,Probook 470,Notebook,17.3,8,Windows 10,2.5,1018.0,Full HD,1920,1080,No,No,No,Intel,1.8,Core i7 8550U,1024,0,HDD,No,Nvidia,GeForce 930MX +Lenovo,V330-15IKB (i7-8550U/8GB/256GB/FHD/W10),Notebook,15.6,8,Windows 10,2.05,880.0,Full HD,1920,1080,No,No,No,Intel,1.8,Core i7 8550U,256,0,SSD,No,Intel,UHD Graphics 620 +Apple,MacBook Pro,Ultrabook,13.3,8,macOS,1.37,1958.9,Standard,2560,1600,No,Yes,Yes,Intel,2.9,Core i5,512,0,SSD,No,Intel,Iris Graphics 550 +Asus,Rog Strix,Gaming,17.3,16,Windows 10,3.2,1549.0,Full HD,1920,1080,No,No,No,AMD,3.0,Ryzen 1700,256,1024,SSD,HDD,AMD,Radeon RX 580 +Dell,Inspiron 3576,Notebook,15.6,8,Linux,2.14,735.07,Full HD,1920,1080,No,No,No,Intel,1.8,Core i7 8550U,256,0,SSD,No,AMD,Radeon 520 +Lenovo,ThinkPad X1,2 in 1 Convertible,14.0,16,Windows 10,1.36,2499.0,Standard,2560,1440,Yes,No,No,Intel,2.6,Core i7 6600U,512,0,SSD,No,Intel,HD Graphics 520 +Toshiba,Satellite Pro,Notebook,15.6,8,Windows 10,2.2,812.0,Standard,1366,768,No,No,No,Intel,2.5,Core i7 6500U,500,0,HDD,No,Nvidia,GeForce 930M +Dell,Inspiron 5567,Notebook,15.6,12,Windows 10,2.3,713.07,Standard,1366,768,No,No,No,Intel,2.7,Core i7 7500U,1024,0,HDD,No,Intel,HD Graphics 620 +Dell,Inspiron 5770,Notebook,17.3,8,Linux,2.8,1099.0,Full HD,1920,1080,No,No,No,Intel,1.8,Core i7 8550U,128,1024,SSD,HDD,AMD,Radeon 530 +Acer,Aspire A515-51G,Notebook,15.6,8,Windows 10,2.2,745.0,Full HD,1920,1080,No,Yes,No,Intel,1.8,Core i7 8550U,1024,0,HDD,No,Nvidia,GeForce MX130 +Lenovo,IdeaPad 320-17ISK,Notebook,17.3,4,Windows 10,2.8,489.0,Standard,1600,900,No,No,No,Intel,2.0,Core i3 6006U,1024,0,HDD,No,Intel,HD Graphics 520 +Lenovo,IdeaPad 320-17IKBR,Notebook,17.3,8,No OS,2.8,849.0,Full HD,1920,1080,No,No,No,Intel,1.8,Core i7 8550U,2048,0,HDD,No,Nvidia,GeForce MX150 +Lenovo,IdeaPad 320-17IKB,Notebook,17.3,6,Windows 10,2.8,859.0,Standard,1600,900,No,No,No,Intel,2.7,Core i7 7500U,128,1024,SSD,HDD,Nvidia,GeForce 940MX +Dell,Inspiron 3567,Notebook,15.6,4,Linux,2.25,428.0,Full HD,1920,1080,No,No,No,Intel,2.0,Core i3 6006U,1024,0,HDD,No,AMD,Radeon R5 M430 +Lenovo,Legion Y520-15IKBN,Gaming,15.6,8,Windows 10,2.5,829.0,Full HD,1920,1080,No,Yes,No,Intel,2.5,Core i5 7300HQ,256,0,SSD,No,Nvidia,GeForce GTX 1050 +Lenovo,Ideapad 320-15IKBN,Notebook,15.6,6,Windows 10,2.2,579.0,Full HD,1920,1080,No,No,No,Intel,2.5,Core i5 7200U,256,0,SSD,No,Intel,HD Graphics 620 +Acer,Aspire A517-51G,Notebook,15.6,8,Windows 10,3.0,951.0,Full HD,1920,1080,No,Yes,No,Intel,1.8,Core i7 8550U,256,0,SSD,No,Nvidia,GeForce MX150 +Acer,SP315-51 (i7-7500U/12GB/1TB/FHD/W10),Notebook,15.6,12,Windows 10,2.15,659.0,Full HD,1920,1080,Yes,Yes,No,Intel,2.7,Core i7 7500U,1024,0,HDD,No,Intel,HD Graphics 620 +Lenovo,Thinkpad T570,Notebook,15.6,8,Windows 10,1.95,1097.0,Full HD,1920,1080,No,Yes,No,Intel,2.7,Core i7 7500U,256,0,SSD,No,Intel,HD Graphics 630 +Asus,VivoBook S15,Ultrabook,15.6,8,Windows 10,1.7,977.0,Full HD,1920,1080,No,No,No,Intel,2.5,Core i5 7200U,256,0,SSD,No,Nvidia,GeForce 940MX +Lenovo,Legion Y520-15IKBN,Gaming,15.6,16,Windows 10,2.5,1179.0,Full HD,1920,1080,No,Yes,No,Intel,2.8,Core i7 7700HQ,256,1024,SSD,HDD,Nvidia,GeForce GTX 1050 Ti +Lenovo,IdeaPad 320-15IKB,Notebook,15.6,8,No OS,2.2,659.01,Full HD,1920,1080,No,No,No,Intel,2.7,Core i7 7500U,1024,0,HDD,No,Nvidia,GeForce 940MX +Acer,Chromebook C910-C2ST,Notebook,15.6,2,Chrome OS,2.19,199.0,Standard,1366,768,No,No,No,Intel,1.5,Celeron Dual Core 3205U,16,0,SSD,No,Intel,HD Graphics +Asus,FX753VD-GC071T (i7-7700HQ/8GB/1TB/GeForce,Gaming,17.3,8,Windows 10,3.0,1187.0,Full HD,1920,1080,No,No,No,Intel,2.8,Core i7 7700HQ,1024,0,HDD,No,Nvidia,GeForce GTX 1050 +HP,17-BS037cl (i3-6006U/8GB/1TB/W10),Notebook,17.3,8,Windows 10,2.54,489.0,Standard,1600,900,No,No,No,Intel,2.0,Core i3 6006U,1024,0,HDD,No,Intel,HD Graphics 520 +Dell,XPS 15,Notebook,15.6,8,Windows 10,2.0,1829.0,Full HD,1920,1080,No,No,No,Intel,2.8,Core i7 7700HQ,256,0,SSD,No,Nvidia,GeForce GTX 1050 +Lenovo,V330-15IKB (i5-8250U/8GB/256GB/FHD/W10),Notebook,15.6,8,Windows 10,2.05,739.0,Full HD,1920,1080,No,No,No,Intel,1.6,Core i5 8250U,256,0,SSD,No,Intel,UHD Graphics 620 +Lenovo,Legion Y720-15IKB,Gaming,15.6,8,Windows 10,3.2,1299.0,Full HD,1920,1080,No,Yes,No,Intel,2.8,Core i7 7700HQ,1024,0,HDD,No,Nvidia,GeForce GTX 1060 +Acer,Aspire A715-71G,Notebook,15.6,8,Linux,2.5,979.0,Full HD,1920,1080,No,No,No,Intel,2.8,Core i7 7700HQ,256,0,SSD,No,Nvidia,GeForce GTX 1050 Ti +Dell,Precision 7720,Workstation,17.3,16,Windows 10,3.42,2884.86,Full HD,1920,1080,No,No,No,Intel,2.9,Core i7 7820HQ,256,0,SSD,No,Nvidia,Quadro M1200 +Lenovo,IdeaPad 310-15ABR,Notebook,15.6,6,Windows 10,2.4,499.0,Full HD,1920,1080,No,No,No,AMD,2.4,A10-Series 9600P,1024,0,HDD,No,AMD,Radeon R5 430 +Asus,ZenBook UX530UQ-PRO,Ultrabook,15.6,16,Windows 10,1.63,1468.0,Full HD,1920,1080,No,No,No,Intel,2.7,Core i7 7500U,512,0,SSD,No,Nvidia,GeForce 940MX +Asus,VivoBook S14,Notebook,14.0,4,Windows 10,1.3,509.0,Standard,1366,768,No,No,No,Intel,2.4,Core i3 7100U,128,0,SSD,No,Intel,HD Graphics 620 +Asus,Rog GL702VS-GC095T,Gaming,17.3,16,Windows 10,2.9,2122.0,Full HD,1920,1080,No,No,No,Intel,2.8,Core i7 7700HQ,256,1024,SSD,HDD,Nvidia,GeForce GTX 1070 +Lenovo,IdeaPad 320-17IKB,Notebook,17.3,6,Windows 10,2.8,649.0,Standard,1600,900,No,No,No,Intel,2.5,Core i5 7200U,1024,0,HDD,No,Nvidia,GeForce GTX 940M +Lenovo,IdeaPad 320-15IKBN,Notebook,15.6,8,No OS,2.2,549.0,Standard,1366,768,No,No,No,Intel,2.5,Core i5 7200U,2048,0,HDD,No,Nvidia,GeForce 940MX +Asus,GL553VE-FY082T (i7-7700HQ/8GB/1TB,Gaming,15.6,8,Windows 10,2.5,1265.0,Full HD,1920,1080,No,No,No,Intel,2.8,Core i7 7700HQ,128,1024,SSD,HDD,Nvidia,GeForce GTX 1050 Ti +Lenovo,IdeaPad 320-15IAP,Notebook,15.6,4,No OS,2.2,359.99,Standard,1366,768,No,No,No,Intel,1.1,Pentium Quad Core N4200,1024,0,HDD,No,Intel,HD Graphics 505 +HP,EliteBook x360,2 in 1 Convertible,13.3,16,Windows 10,1.28,1975.0,Full HD,1920,1080,Yes,No,No,Intel,2.8,Core i7 7600U,256,0,SSD,No,Intel,HD Graphics 620 +Toshiba,Satellite Pro,Notebook,15.6,8,Windows 10,2.2,1043.0,Full HD,1920,1080,No,Yes,No,Intel,2.5,Core i7 6500U,256,0,SSD,No,Nvidia,GeForce 930M +Lenovo,IdeaPad 320-15IKB,Notebook,15.6,8,Windows 10,2.3,819.0,Full HD,1920,1080,No,No,No,Intel,2.5,Core i5 7200U,128,1024,SSD,HDD,Nvidia,GeForce 940MX +HP,250 G6,Notebook,15.6,4,Windows 10,1.86,469.0,Full HD,1920,1080,No,No,No,Intel,2.0,Core i3 6006U,1024,0,HDD,No,Intel,HD Graphics 520 +Lenovo,IdeaPad 720S-13IKB,Notebook,13.3,8,Windows 10,1.1,999.0,Full HD,1920,1080,No,Yes,No,Intel,2.5,Core i5 7200U,256,0,SSD,No,Intel,HD Graphics 620 +Dell,XPS 13,Ultrabook,13.3,16,Windows 10,1.21,2499.0,4K Ultra HD,3840,2160,Yes,Yes,No,Intel,1.8,Core i7 8550U,1024,0,SSD,No,Intel,UHD Graphics 620 +MSI,GE63VR 7RF,Gaming,15.6,16,Windows 10,2.8,2099.0,Full HD,1920,1080,No,Yes,No,Intel,2.8,Core i7 7700HQ,256,1024,SSD,HDD,Nvidia,GeForce GTX 1070 +Acer,ES1-523-84K7 (A8-7410/8GB/256GB/FHD/W10),Notebook,15.6,8,Windows 10,2.23,469.0,Full HD,1920,1080,No,No,No,AMD,2.2,A8-Series 7410,256,0,SSD,No,AMD,Radeon R5 +Asus,VivoBook Flip,2 in 1 Convertible,11.6,2,Windows 10,1.1,275.0,Standard,1366,768,Yes,No,No,Intel,1.1,Celeron Dual Core N3350,32,0,Flash Storage,No,Intel,HD Graphics 500 +Dell,Inspiron 5570,Notebook,15.6,8,Windows 10,2.33,844.0,Full HD,1920,1080,No,No,No,Intel,1.6,Core i5 8250U,128,1024,SSD,HDD,AMD,Radeon 530 +HP,Spectre x360,2 in 1 Convertible,13.3,16,Windows 10,1.29,2449.0,4K Ultra HD,3840,2160,Yes,Yes,No,Intel,1.8,Core i7 8550U,1024,0,SSD,No,Intel,UHD Graphics 620 +Lenovo,ThinkPad 13,Notebook,13.3,4,Chrome OS,1.45,459.9,Standard,1366,768,No,No,No,Intel,1.6,Celeron Dual Core 3855U,16,0,Flash Storage,No,Intel,HD Graphics 510 +HP,ProBook 640,Notebook,14.0,8,Windows 10,1.95,980.0,Full HD,1920,1080,No,No,No,Intel,2.5,Core i5 7200U,256,0,SSD,No,Intel,HD Graphics 620 +Acer,TravelMate B,Notebook,11.6,4,Windows 10,1.4,485.0,Standard,1366,768,No,No,No,Intel,1.6,Pentium Quad Core N3710,128,0,Flash Storage,No,Intel,HD Graphics 405 +HP,Elitebook 840,Notebook,14.0,8,Windows 10,1.48,1292.0,Full HD,1920,1080,No,No,No,Intel,2.7,Core i7 7500U,256,0,SSD,No,Intel,HD Graphics 620 +Lenovo,IdeaPad 320-17IKB,Notebook,17.3,4,Windows 10,2.79,589.0,Standard,1600,900,No,No,No,Intel,2.5,Core i5 7200U,1024,0,HDD,No,Nvidia,GeForce 920MX +Asus,ZenBook UX410UA-GV183T,Notebook,14.0,8,Windows 10,2.0,1094.0,Full HD,1920,1080,No,No,No,Intel,2.7,Core i7 7500U,256,0,SSD,No,Intel,HD Graphics 620 +HP,ProBook 450,Notebook,15.6,8,Windows 10,2.1,902.0,Full HD,1366,768,No,Yes,No,Intel,1.8,Core i7 8550U,1024,0,HDD,No,Intel,UHD Graphics 620 +Acer,Aspire 5,Notebook,15.6,8,Windows 10,2.2,659.0,Standard,1366,768,No,No,No,AMD,2.7,A12-Series 9720P,256,0,SSD,No,AMD,Radeon RX 540 +Lenovo,IdeaPad 120S-14IAP,Notebook,14.0,4,Windows 10,1.44,292.0,Standard,1366,768,No,No,No,Intel,1.1,Celeron Dual Core N3350,32,0,Flash Storage,No,Intel,HD Graphics 500 +Acer,Aspire E5-575,Notebook,15.6,6,Windows 10,2.23,549.0,Standard,1366,768,No,No,No,Intel,2.5,Core i5 7200U,1024,0,HDD,No,Intel,HD Graphics 620 +Asus,VivoBook S15,Ultrabook,15.6,8,Windows 10,1.7,1049.9,Full HD,1920,1080,No,No,No,Intel,2.7,Core i7 7500U,256,0,SSD,No,Nvidia,GeForce 940MX +HP,Elitebook 820,Ultrabook,12.5,8,Windows 10,1.26,1335.0,Full HD,1920,1080,No,No,No,Intel,2.7,Core i7 7500U,256,0,SSD,No,Intel,HD Graphics 620 +Dell,XPS 15,Notebook,15.6,32,Windows 10,2.06,2639.0,4K Ultra HD,3840,2160,Yes,No,No,Intel,2.8,Core i7 7700HQ,1024,0,SSD,No,Nvidia,GeForce GTX 1050 +MSI,GL72M 7REX,Gaming,17.3,8,Windows 10,2.7,1199.0,Full HD,1920,1080,No,No,No,Intel,2.8,Core i7 7700HQ,256,1024,SSD,HDD,Nvidia,GeForce GTX 1050 Ti +Toshiba,Satellite Pro,Notebook,15.6,8,Windows 10,2.0,943.0,Full HD,1920,1080,No,Yes,No,Intel,2.5,Core i5 7200U,256,0,SSD,No,Intel,HD Graphics 620 +Asus,UX510UX-CN269T (i7-7500U/8GB/256GB,Notebook,14.0,8,Windows 10,2.0,1334.0,Full HD,1920,1080,No,No,No,Intel,2.7,Core i7 7500U,256,1024,SSD,HDD,Intel,HD Graphics 620 +Lenovo,V310-15ISK (i3-6006U/4GB/1TB/FHD/W10),Notebook,15.6,4,Windows 10,1.85,449.0,Full HD,1920,1080,No,No,No,Intel,2.0,Core i3 6006U,1024,0,HDD,No,Intel,HD Graphics 520 +Asus,FX553VD-FY647T (i7-7700HQ/8GB/256GB/GeForce,Gaming,15.6,8,Windows 10,2.5,999.0,Full HD,1920,1080,No,No,No,Intel,2.8,Core i7 7700HQ,256,0,SSD,No,Nvidia,GeForce GTX 1050 +HP,EliteBook 840,Notebook,14.0,8,Windows 10,1.48,1268.0,Full HD,1920,1080,No,No,No,Intel,2.6,Core i5 7300U,256,0,SSD,No,Intel,HD Graphics 620 +Dell,Inspiron 7570,Ultrabook,15.6,8,Windows 10,1.9,1049.0,Full HD,1920,1080,No,Yes,No,Intel,1.6,Core i5 8250U,128,1024,SSD,HDD,Nvidia,GeForce 940MX +HP,Elitebook 850,Notebook,15.6,8,Windows 10,1.84,1144.0,Full HD,1920,1080,No,No,No,Intel,2.5,Core i5 7200U,256,0,SSD,No,Intel,HD Graphics 620 +Asus,X541NA (N3350/4GB/1TB/Linux),Notebook,15.6,4,Linux,2.0,274.99,Standard,1366,768,No,No,No,Intel,1.1,Celeron Dual Core N3350,1024,0,HDD,No,Intel,HD Graphics 500 +Dell,Inspiron 7570,Notebook,15.6,8,Windows 10,2.0,1142.75,Full HD,1920,1080,No,No,No,Intel,1.6,Core i5 8250U,256,0,SSD,No,Nvidia,GeForce 940MX +Dell,Inspiron 3552,Notebook,15.6,4,Linux,2.2,274.9,Standard,1366,768,No,No,No,Intel,1.6,Celeron Dual Core N3060,500,0,HDD,No,Intel,HD Graphics +Lenovo,IdeaPad 320-15ABR,Notebook,15.6,12,Windows 10,2.2,899.0,Full HD,1920,1080,No,No,No,AMD,3.6,A12-Series 9720P,2048,0,HDD,No,AMD,Radeon 530 +HP,ProBook 450,Notebook,15.6,8,Windows 10,2.1,716.0,Full HD,1920,1080,No,Yes,No,Intel,2.4,Core i3 7100U,1024,0,HDD,No,Nvidia,GeForce 930MX +Lenovo,Yoga 920-13IKB,2 in 1 Convertible,13.9,16,Windows 10,1.4,2099.0,4K Ultra HD,3840,2160,Yes,Yes,No,Intel,1.8,Core i7 8550U,512,0,SSD,No,Intel,UHD Graphics 620 +Dell,XPS 13,Ultrabook,13.3,8,Windows 10,1.2,1579.0,Full HD,1920,1080,No,No,No,Intel,1.8,Core i7 8550U,256,0,SSD,No,Intel,UHD Graphics 620 +Lenovo,Legion Y520-15IKBN,Gaming,15.6,16,Windows 10,2.4,1129.0,Full HD,1920,1080,No,Yes,No,Intel,2.8,Core i7 7700HQ,256,2048,SSD,HDD,Nvidia,GeForce GTX 1050 Ti +HP,Stream 14-AX001nv,Notebook,14.0,2,Windows 10,1.44,279.0,Standard,1366,768,No,No,No,Intel,1.6,Celeron Dual Core N3060,32,0,Flash Storage,No,Intel,HD Graphics 400 +Dell,Latitude 5590,Ultrabook,15.6,16,Windows 10,1.88,1607.96,Full HD,1920,1080,No,No,No,Intel,1.9,Core i7 8650U,512,256,SSD,SSD,Intel,UHD Graphics 620 +Asus,VivoBook Flip,2 in 1 Convertible,11.6,4,Windows 10,1.5,375.0,Standard,1366,768,Yes,No,No,Intel,1.1,Celeron Dual Core N3350,32,0,Flash Storage,No,Intel,HD Graphics 500 +Dell,Inspiron 5570,Ultrabook,15.6,8,Windows 10,1.9,663.0,Full HD,1920,1080,No,No,No,Intel,1.6,Core i5 8250U,1024,0,HDD,No,AMD,Radeon 530 +Dell,XPS 15,Notebook,15.6,16,Windows 10,2.06,2027.42,4K Ultra HD,3840,2160,Yes,No,No,Intel,2.8,Core i7 7700HQ,512,0,SSD,No,Nvidia,GeForce GTX 1050 +HP,Elitebook 850,Notebook,15.6,8,Windows 10,1.84,1304.0,Full HD,1920,1080,No,No,No,Intel,2.7,Core i7 7500U,256,0,SSD,No,Intel,HD Graphics 620 +MSI,GP72MVR 7RFX,Gaming,17.3,8,Windows 10,2.7,1409.0,Full HD,1920,1080,No,No,No,Intel,2.8,Core i7 7700HQ,128,1024,SSD,HDD,Nvidia,GeForce GTX 1060 +HP,Zbook 15,Workstation,15.6,8,Windows 10,2.6,1738.27,Full HD,1920,1080,No,No,No,Intel,2.8,Core i7 7700HQ,256,0,SSD,No,Nvidia,Quadro M1200 +Toshiba,Tecra A50-C-21G,Notebook,15.6,16,Windows 10,2.4,1403.0,Full HD,1920,1080,No,Yes,No,Intel,2.5,Core i7 6500U,512,0,SSD,No,Nvidia,GeForce 930M +Dell,Inspiron 5570,Notebook,15.6,8,Windows 10,2.02,970.9,Full HD,1920,1080,No,No,No,Intel,1.8,Core i7 8550U,128,2048,SSD,HDD,AMD,Radeon 530 +Lenovo,IdeaPad 320-15IAP,Notebook,15.6,4,No OS,2.2,321.99,Standard,1366,768,No,No,No,Intel,1.1,Celeron Dual Core N3350,1024,0,HDD,No,Intel,HD Graphics 500 +Dell,Inspiron 7577,Gaming,15.6,8,Windows 10,2.65,999.0,Full HD,1920,1080,No,No,No,Intel,2.5,Core i5 7300HQ,1024,0,HDD,No,Nvidia,GeForce GTX 1050 +Dell,Inspiron 3567,Notebook,15.6,8,Windows 10,2.36,557.37,Standard,1366,768,Yes,No,No,Intel,2.5,Core i5 7200U,2048,0,HDD,No,Intel,HD Graphics 620 +Dell,Latitude 7480,Notebook,14.0,8,Windows 10,1.36,1427.0,Full HD,1920,1080,No,No,No,Intel,2.6,Core i5 7300U,256,0,SSD,No,Intel,HD Graphics 620 +HP,250 G6,Notebook,15.6,4,Windows 10,1.86,439.0,Standard,1366,768,No,No,No,Intel,2.0,Core i3 6006U,500,0,HDD,No,Intel,HD Graphics 520 +Asus,Zenbook UX410UA-GV027T,Notebook,14.0,8,Windows 10,2.0,945.0,Full HD,1920,1080,No,No,No,Intel,2.5,Core i5 7200U,256,0,SSD,No,Intel,HD Graphics 620 +Lenovo,IdeaPad 320-17IKB,Notebook,17.3,6,Windows 10,2.8,719.0,Standard,1600,900,No,No,No,Intel,2.5,Core i5 7200U,128,1024,SSD,HDD,Nvidia,GeForce GTX 940MX +HP,250 G6,Notebook,15.6,8,Windows 10,1.86,639.0,Full HD,1920,1080,No,No,No,Intel,2.5,Core i5 7200U,1024,0,HDD,No,Intel,HD Graphics 620 +Lenovo,IdeaPad 320-15ISK,Notebook,15.6,8,No OS,2.2,499.0,Standard,1366,768,No,No,No,Intel,2.0,Core i3 6006U,256,0,SSD,No,Nvidia,GeForce 920MX +HP,15-AY023na (N3710/8GB/2TB/W10),Notebook,15.6,8,Windows 10,2.04,389.0,Standard,1366,768,No,No,No,Intel,1.6,Pentium Quad Core N3710,2048,0,HDD,No,Intel,HD Graphics 405 +Dell,Inspiron 5770,Notebook,17.3,8,Windows 10,2.8,1085.0,Full HD,1920,1080,No,No,No,Intel,1.6,Core i5 8250U,128,1024,SSD,HDD,AMD,Radeon 530 +Lenovo,Legion Y520-15IKBN,Gaming,15.6,8,No OS,2.4,809.0,Full HD,1920,1080,No,Yes,No,Intel,2.5,Core i5 7300HQ,128,1024,SSD,HDD,Nvidia,GeForce GTX 1050 +Dell,Inspiron 5567,Notebook,15.6,8,Windows 10,2.33,899.0,Full HD,1920,1080,No,No,No,Intel,2.7,Core i7 7500U,256,0,SSD,No,AMD,Radeon R7 M445 +HP,Elitebook 1040,Ultrabook,14.0,8,Windows 10,1.36,1750.0,Full HD,1920,1080,No,Yes,No,Intel,2.7,Core i7 7500U,256,0,SSD,No,Intel,HD Graphics 620 +Asus,ZenBook Flip,2 in 1 Convertible,15.6,12,Windows 10,2.26,1099.0,Full HD,1920,1080,Yes,No,No,Intel,2.7,Core i7 7500U,512,2048,SSD,HDD,Nvidia,GeForce GT 940MX +Acer,Aspire 3,Notebook,15.6,4,Windows 10,2.1,426.0,Standard,1366,768,No,No,No,AMD,3.0,A9-Series 9420,128,0,SSD,No,AMD,Radeon R5 +Asus,Rog Strix,Gaming,17.3,16,Windows 10,3.25,2199.0,Full HD,1920,1080,No,Yes,No,AMD,3.0,Ryzen 1700,256,1024,SSD,HDD,AMD,Radeon RX 580 +Lenovo,IdeaPad 110-17ACL,Notebook,17.3,4,Windows 10,2.6,489.0,Standard,1600,900,No,No,No,AMD,2.2,A8-Series 7410,128,0,SSD,No,AMD,Radeon R5 +Dell,Inspiron 5379,2 in 1 Convertible,13.3,8,Windows 10,1.62,869.01,Full HD,1920,1080,Yes,No,No,Intel,1.8,Core i7 8550U,256,0,SSD,No,Intel,UHD Graphics 620 +HP,15-bw003nv (A9-Series-9420/4GB/256GB/FHD/W10),Notebook,15.6,4,Windows 10,1.91,488.99,Full HD,1920,1080,No,No,No,AMD,3.0,A9-Series 9420,256,0,SSD,No,AMD,Radeon R5 +Lenovo,Yoga 11e,Netbook,11.6,4,Windows 10,1.59,553.0,Standard,1366,768,No,Yes,No,Intel,1.1,Celeron Quad Core N3450,128,0,SSD,No,Intel,HD Graphics 500 +Dell,Inspiron 3552,Notebook,15.6,4,Windows 10,1.8,309.0,Standard,1366,768,No,No,No,Intel,1.6,Celeron Dual Core N3060,500,0,HDD,No,Intel,HD Graphics 400 +Asus,VivoBook E403NA,Notebook,14.0,4,Windows 10,1.5,286.0,Standard,1366,768,No,No,No,Intel,1.1,Celeron Dual Core N3350,32,0,Flash Storage,No,Intel,HD Graphics 500 +Acer,Aspire 7,Notebook,15.6,8,Linux,2.4,846.0,Full HD,1920,1080,No,No,No,Intel,2.8,Core i7 7700HQ,1024,0,HDD,No,Nvidia,GeForce GTX 1050 +HP,Omen 17-w212nv,Gaming,17.3,8,Windows 10,3.35,1191.0,Full HD,1920,1080,No,Yes,No,Intel,2.8,Core i7 7700HQ,128,1024,SSD,HDD,Nvidia,GeForce GTX 1050 +Lenovo,V310-15ISK (i3-6006U/4GB/128GB/FHD/No,Notebook,15.6,4,No OS,1.85,403.5,Full HD,1920,1080,No,No,No,Intel,2.0,Core i3 6006U,128,0,SSD,No,Intel,HD Graphics 520 +Asus,ROG Strix,Gaming,15.6,8,Windows 10,2.3,1655.0,Full HD,1920,1080,No,Yes,No,Intel,2.8,Core i7 7700HQ,128,1024,SSD,HDD,Nvidia,GeForce GTX 1060 +Lenovo,IdeaPad 720S-14IKB,Notebook,14.0,8,Windows 10,1.5,1099.0,Full HD,1920,1080,No,Yes,No,Intel,2.5,Core i5 7200U,256,0,SSD,No,Nvidia,GeForce 940MX +Asus,Zenbook Flip,Ultrabook,13.3,16,Windows 10,1.1,1748.9,Full HD,1920,1080,Yes,No,No,Intel,2.7,Core i7 7500U,512,0,SSD,No,Intel,HD Graphics 620 +Lenovo,Thinkpad X1,Ultrabook,14.0,8,Windows 10,1.13,2282.0,Standard,2560,1440,No,Yes,No,Intel,2.7,Core i7 7500U,512,0,SSD,No,Intel,HD Graphics 620 +Lenovo,Ideapad 510S-13IKB,Notebook,13.3,4,Windows 10,1.5,549.0,Full HD,1920,1080,No,Yes,No,Intel,2.4,Core i3 7100U,128,0,SSD,No,Intel,HD Graphics 620 +Dell,Precision 3510,Workstation,15.6,8,Windows 10,2.23,1369.0,Full HD,1920,1080,No,No,No,Intel,2.6,Core i5 6440HQ,500,0,HDD,No,AMD,FirePro W5130M +Dell,Precision 5520,Workstation,15.6,8,Windows 10,2.0,2135.0,Full HD,1920,1080,No,Yes,No,Intel,2.7,Core i7 6820HQ,256,0,SSD,No,Nvidia,Quadro M1200 +Lenovo,ThinkPad X1,2 in 1 Convertible,14.0,16,Windows 10,1.42,2509.0,Standard,2560,1440,Yes,No,No,Intel,2.7,Core i7 7500U,512,0,SSD,No,Intel,HD Graphics 620 +Asus,Rog GL753VD-GC042T,Gaming,17.3,8,Windows 10,3.0,1039.0,Full HD,1920,1080,No,No,No,Intel,2.8,Core i7 7700HQ,1024,0,HDD,No,Nvidia,GeForce GTX 1050 +Asus,Rog GL753VE-GC070T,Gaming,17.3,16,Windows 10,3.0,1591.0,Full HD,1920,1080,No,No,No,Intel,2.8,Core i7 7700HQ,256,1024,SSD,HDD,Nvidia,GeForce GTX 1050 Ti +Acer,Aspire 5,Notebook,15.6,12,Windows 10,2.2,693.99,Standard,1366,768,No,Yes,No,Intel,1.6,Core i5 8250U,1024,0,HDD,No,Nvidia,GeForce MX130 +MSI,Leopard GP72M,Gaming,17.3,8,Windows 10,2.7,1349.0,Full HD,1920,1080,No,No,No,Intel,2.8,Core i7 7700HQ,256,0,SSD,No,Nvidia,GeForce GTX 1050 Ti +Dell,Inspiron 5567,Notebook,15.6,8,Linux,2.33,778.87,Full HD,1920,1080,No,No,No,Intel,2.7,Core i7 7500U,256,0,SSD,No,AMD,Radeon R7 M445 +HP,15-BW004nv (A9-9420/4GB/256GB/Radeon,Ultrabook,15.6,4,Windows 10,1.91,499.0,Full HD,1920,1080,No,No,No,AMD,3.0,A9-Series 9420,256,0,SSD,No,AMD,Radeon 520 +Lenovo,ThinkPad E580,Notebook,15.6,8,Windows 10,2.1,1229.56,Full HD,1920,1080,No,Yes,No,Intel,1.8,Core i7 8550U,256,0,SSD,No,AMD,Radeon RX 550 +Lenovo,ThinkPad L470,Notebook,14.0,8,Windows 10,1.9,938.0,Full HD,1920,1080,No,Yes,No,Intel,2.5,Core i5 7200U,256,0,SSD,No,Intel,HD Graphics 620 +Dell,Precision M5520,Workstation,15.6,8,Windows 10,1.78,2712.0,4K Ultra HD,3840,2160,Yes,No,No,Intel,2.8,Core i7 7700HQ,256,0,SSD,No,Nvidia,Quadro M1200 +Lenovo,Thinkpad X1,Ultrabook,14.0,16,Windows 10,1.13,2625.0,Standard,2560,1440,No,Yes,No,Intel,2.7,Core i7 7500U,1024,0,SSD,No,Intel,HD Graphics 620 +Lenovo,IdeaPad 320-15IAP,Notebook,15.6,4,Windows 10,2.2,306.0,Standard,1366,768,No,No,No,Intel,1.1,Celeron Dual Core N3350,1024,0,HDD,No,Intel,HD Graphics 500 +Asus,FX753VD-GC461T (i7-7700HQ/16GB/1TB,Gaming,17.3,16,Windows 10,2.9,1529.0,Full HD,1920,1080,No,No,No,Intel,2.8,Core i7 7700HQ,256,1024,SSD,HDD,Nvidia,GeForce GTX 1050 +Lenovo,ThinkPad E580,Notebook,15.6,8,Windows 10,2.1,1144.5,Full HD,1920,1080,No,Yes,No,Intel,1.6,Core i5 8250U,256,1024,SSD,HDD,AMD,Radeon RX 550 +Acer,Aspire 7,Notebook,15.6,8,Linux,2.5,879.0,Full HD,1920,1080,No,No,No,Intel,2.8,Core i7 7700HQ,256,0,SSD,No,Nvidia,GeForce GTX 1050 +MSI,GE73VR 7RF,Gaming,17.3,16,Windows 10,2.8,2249.0,Full HD,1920,1080,No,No,No,Intel,2.8,Core i7 7700HQ,256,1024,SSD,HDD,Nvidia,GeForce GTX 1070 +Asus,Zenbook 3,Ultrabook,14.0,8,Windows 10,1.1,1873.0,Full HD,1920,1080,No,No,No,Intel,2.7,Core i7 7500U,512,0,SSD,No,Intel,HD Graphics 620 +Toshiba,Portege Z30-C-16P,Ultrabook,13.3,16,Windows 10,1.2,1747.0,Full HD,1920,1080,No,No,No,Intel,2.5,Core i7 6500U,512,0,SSD,No,Intel,HD Graphics 520 +Dell,Latitude 7480,Ultrabook,14.0,8,Windows 10,1.36,1680.0,Full HD,1920,1080,No,No,No,Intel,2.8,Core i7 7600U,512,0,SSD,No,Intel,HD Graphics +Lenovo,IdeaPad 320-15ISK,Notebook,15.6,4,Windows 10,2.2,409.0,Full HD,1920,1080,No,No,No,Intel,2.0,Core i3 6006U,500,0,HDD,No,Intel,HD Graphics 520 +Lenovo,Lenovo IdeaPad,Notebook,11.6,2,Windows 10,1.15,304.45,Standard,1366,768,No,No,No,Intel,1.1,Celeron Dual Core N3350,32,0,Flash Storage,No,Intel,HD Graphics 500 +Lenovo,ThinkPad P51,Workstation,15.6,8,Windows 10,2.67,1925.0,Full HD,1920,1080,No,No,No,Intel,2.8,Core i7 7700HQ,512,0,SSD,No,Nvidia,Quadro M1200 +Lenovo,Thinkpad T470p,Ultrabook,14.0,8,Windows 10,1.7,1943.0,Full HD,2560,1440,No,Yes,No,Intel,2.8,Core i7 7700HQ,512,0,SSD,No,Nvidia,GeForce GT 940MX +HP,15-BS028nv (i3-6006U/4GB/1TB/Radeon,Notebook,15.6,4,Windows 10,2.1,469.0,Full HD,1920,1080,No,No,No,Intel,2.0,Core i3 6006U,1024,0,HDD,No,AMD,Radeon 520 +Acer,Aspire R7,2 in 1 Convertible,13.3,8,Windows 10,1.6,789.01,Full HD,1920,1080,Yes,Yes,No,Intel,2.5,Core i7 6500U,256,0,SSD,No,Intel,HD Graphics 520 +Asus,ZenBook Flip,2 in 1 Convertible,13.3,8,Windows 10,1.27,928.0,Full HD,1920,1080,Yes,Yes,No,Intel,2.5,Core i5 7200U,256,0,SSD,No,Intel,HD Graphics 620 +Dell,Inspiron 3567,Notebook,15.6,4,Linux,2.3,598.9,Full HD,1920,1080,No,No,No,Intel,2.5,Core i5 7200U,256,0,SSD,No,AMD,Radeon R5 M430 +Dell,Latitude 3380,Notebook,13.3,4,Windows 10,1.65,689.0,Standard,1366,768,No,No,No,Intel,2.0,Core i3 6006U,128,0,SSD,No,Intel,HD Graphics 520 +HP,EliteBook 1040,Ultrabook,14.0,8,Windows 10,1.43,1500.0,Full HD,1920,1080,No,No,No,Intel,2.5,Core i7 6500U,256,0,SSD,No,Intel,HD Graphics 520 +Dell,Inspiron 3567,Notebook,15.6,8,Windows 10,2.14,539.95,Standard,1366,768,No,No,No,Intel,2.5,Core i5 7200U,1024,0,HDD,No,Intel,HD Graphics 620 +Lenovo,ThinkPad E480,Ultrabook,14.0,8,Windows 10,1.75,1215.38,Full HD,1920,1080,No,Yes,No,Intel,1.8,Core i7 8550U,256,0,SSD,No,AMD,Radeon RX 550 +Lenovo,Yoga 720-15IKB,2 in 1 Convertible,15.6,16,Windows 10,2.0,1899.0,4K Ultra HD,3840,2160,Yes,Yes,No,Intel,2.8,Core i7 7700HQ,512,0,SSD,No,Nvidia,GeForce GTX 1050 +Chuwi,LapBook 12.3,Notebook,12.3,6,Windows 10,1.4,449.0,Standard,2736,1824,No,Yes,Yes,Intel,1.1,Celeron Quad Core N3450,64,0,Flash Storage,No,Intel,HD Graphics 500 +HP,ProBook 650,Notebook,15.6,8,Windows 10,2.31,1427.0,Full HD,1920,1080,No,No,No,Intel,2.9,Core i7 7820HQ,256,0,SSD,No,Intel,HD Graphics 630 +Asus,X542UQ-DM117 (i3-7100U/8GB/1TB/GeForce,Notebook,15.6,8,Linux,2.3,597.0,Full HD,1920,1080,No,No,No,Intel,2.4,Core i3 7100U,1024,0,HDD,No,Nvidia,GeForce 940MX +Dell,Alienware 17,Gaming,17.3,16,Windows 10,4.42,2799.0,Standard,2560,1440,No,Yes,No,Intel,2.9,Core i7 7820HK,256,1024,SSD,HDD,Nvidia,GeForce GTX 1070 +Dell,Inspiron 7577,Gaming,15.6,8,Windows 10,2.62,1159.0,Full HD,1920,1080,No,Yes,No,Intel,2.8,Core i7 7700HQ,128,1024,SSD,HDD,Nvidia,GeForce GTX 1050 Ti +Dell,Inspiron 5570,Notebook,15.6,8,Windows 10,2.02,1142.4,Full HD,1920,1080,No,No,No,Intel,1.8,Core i7 8550U,256,2048,SSD,HDD,AMD,Radeon 530 +Dell,Latitude 5480,Ultrabook,14.0,8,Linux,1.6,1099.0,Full HD,1920,1080,No,No,No,Intel,2.8,Core i7 7600U,256,0,SSD,No,Intel,HD Graphics 620 +HP,Omen 17-w207nv,Gaming,17.3,12,Windows 10,3.35,1999.0,Full HD,1920,1080,No,No,No,Intel,2.8,Core i7 7700HQ,256,1024,SSD,HDD,Nvidia,GeForce GTX 1070 +Mediacom,FlexBook Edge,2 in 1 Convertible,11.6,4,Windows 10,1.16,299.0,Full HD,1920,1080,Yes,Yes,No,Intel,1.1,Celeron Dual Core N3350,32,0,SSD,No,Intel,HD Graphics 500 +Samsung,Chromebook 3,Netbook,11.6,4,Chrome OS,1.15,269.0,Standard,1366,768,No,No,No,Intel,1.6,Celeron Dual Core N3060,16,0,Flash Storage,No,Intel,HD Graphics 400 +Lenovo,Thinkpad 13,Notebook,13.3,8,Windows 10,1.4,1010.0,Full HD,1920,1080,No,Yes,No,Intel,2.7,Core i7 7500U,256,0,SSD,No,Intel,HD Graphics 620 +Lenovo,IdeaPad 320s-14IKB,Notebook,14.0,4,Windows 10,1.7,599.0,Full HD,1920,1080,No,Yes,No,Intel,2.7,Core i3 7130U,128,0,SSD,No,Intel,HD Graphics 620 +Lenovo,Thinkpad T570,Workstation,15.6,16,Windows 10,2.3,2445.0,4K Ultra HD,3840,2160,No,Yes,No,Intel,2.8,Core i7 7600U,512,0,SSD,No,Nvidia,GeForce 940MX +Lenovo,Thinkpad P51,Notebook,15.6,16,Windows 10,2.5,2449.0,Full HD,1920,1080,No,No,No,Intel,2.9,Core i7 7820HQ,512,0,SSD,No,Nvidia,Quadro M2200M +Asus,Rog Strix,Gaming,17.3,8,Windows 10,3.2,1695.0,Full HD,1920,1080,No,No,No,AMD,3.2,Ryzen 1600,256,1024,SSD,HDD,AMD,Radeon RX 580 +HP,15-ra044nv (N3060/4GB/500GB/W10),Notebook,15.6,4,Windows 10,2.1,347.0,Standard,1366,768,No,No,No,Intel,1.6,Celeron Dual Core N3060,500,0,HDD,No,Intel,HD Graphics 400 +Google,Pixelbook (Core,Ultrabook,12.3,16,Chrome OS,1.1,2199.0,Standard,2400,1600,Yes,No,No,Intel,1.3,Core i7 7Y75,512,0,SSD,No,Intel,HD Graphics 615 +Lenovo,ThinkPad T470s,Ultrabook,14.0,24,Windows 10,1.32,2382.0,Standard,2560,1440,No,No,No,Intel,2.7,Core i7 7500U,512,0,SSD,No,Intel,HD Graphics 620 +Asus,VivoBook Max,Notebook,15.6,4,Linux,2.0,559.0,Full HD,1920,1080,No,No,No,Intel,2.5,Core i5 7200U,256,0,SSD,No,Intel,HD Graphics 620 +Lenovo,IdeaPad 320-15AST,Notebook,17.3,8,Windows 10,2.8,519.0,Standard,1600,900,No,No,No,AMD,2.5,A6-Series 9220,1024,0,HDD,No,AMD,Radeon R4 +Dell,Inspiron 5570,Notebook,15.6,4,Windows 10,2.2,749.0,Full HD,1920,1080,No,No,No,Intel,1.6,Core i5 8250U,256,0,SSD,No,AMD,Radeon 530 +Lenovo,ThinkPad X270,Ultrabook,12.5,8,Windows 10,1.36,1429.0,Full HD,1920,1080,No,Yes,No,Intel,2.5,Core i5 7200U,256,0,SSD,No,Intel,HD Graphics 620 +Lenovo,IdeaPad 320-15IAP,Notebook,15.6,4,Windows 10,2.2,349.0,Full HD,1920,1080,No,No,No,Intel,1.1,Pentium Quad Core N4200,128,0,SSD,No,Intel,HD Graphics 505 +HP,Omen 15-AX205na,Gaming,15.6,8,Windows 10,2.2,1099.0,Full HD,1920,1080,No,Yes,No,Intel,2.8,Core i7 7700HQ,128,1024,SSD,HDD,Nvidia,GeForce GTX 1050 +Dell,Latitude 5480,Notebook,14.0,8,Windows 10,1.64,1179.0,Full HD,1920,1080,No,No,No,Intel,2.8,Core i5 7440HQ,256,0,SSD,No,Nvidia,GeForce 930MX +Acer,Aspire ES1-572,Notebook,15.6,4,Linux,2.4,441.8,Standard,1366,768,No,No,No,Intel,2.5,Core i5 7200U,500,0,HDD,No,Intel,HD Graphics 620 +Dell,Precision 3520,Workstation,15.6,8,Windows 10,2.23,1993.0,Full HD,1920,1080,No,No,No,Intel,3.0,Xeon E3-1505M V6,64,1024,Flash Storage,HDD,Nvidia,Quadro M620 +MSI,GV62 7RD-1686NL,Gaming,15.6,8,Windows 10,2.2,1027.74,Full HD,1920,1080,No,No,No,Intel,2.5,Core i5 7300HQ,256,0,SSD,No,Nvidia,GeForce GTX 1050 +Microsoft,Surface Laptop,Ultrabook,13.5,16,Windows 10 S,1.25,2589.0,Standard,2256,1504,Yes,No,No,Intel,2.5,Core i7 7660U,512,0,SSD,No,Intel,Iris Plus Graphics 640 +HP,15-bs024nv (i5-7200U/8GB/128GB/W10),Notebook,15.6,8,Windows 10,1.91,589.0,Standard,1366,768,No,No,No,Intel,2.5,Core i5 7200U,128,0,SSD,No,Intel,HD Graphics 620 +Dell,Precision 3520,Workstation,15.6,16,Windows 10,2.17,1975.0,Full HD,1920,1080,No,Yes,No,Intel,2.7,Core i7 6820HQ,256,0,SSD,No,Nvidia,Quadro M620 +HP,ProBook 650,Workstation,15.6,8,Windows 10,2.31,1534.0,Full HD,1920,1080,No,Yes,No,Intel,2.9,Core i7 7820HQ,512,0,SSD,No,Intel,HD Graphics 620 +Lenovo,ThinkPad T470,Notebook,14.0,8,Windows 10,1.65,1345.0,Full HD,1920,1080,No,No,No,Intel,2.5,Core i5 7200U,256,0,SSD,No,Intel,HD Graphics 620 +Dell,Inspiron 5570,Notebook,15.6,8,Windows 10,2.36,979.0,Full HD,1920,1080,No,No,No,Intel,1.8,Core i7 8550U,128,1024,SSD,HDD,AMD,Radeon 530 +Dell,Inspiron 3168,2 in 1 Convertible,11.6,4,Windows 10,1.47,479.0,Standard,1366,768,Yes,No,No,Intel,1.6,Pentium Quad Core N3710,500,0,HDD,No,Intel,HD Graphics 405 +Dell,Alienware 17,Notebook,17.3,8,Windows 10,4.42,2046.0,Full HD,1920,1080,No,Yes,No,Intel,2.7,Core i7 7700HQ,1024,0,HDD,No,Nvidia,GeForce GTX 1060 +Microsoft,Surface Laptop,Ultrabook,13.5,4,Windows 10 S,1.252,989.0,Standard,2256,1504,Yes,No,No,Intel,2.2,Core M m3-7Y30,128,0,SSD,No,Intel,HD Graphics 615 +Microsoft,Surface Laptop,Ultrabook,13.5,8,Windows 10 S,1.25,1799.0,Standard,2256,1504,Yes,No,No,Intel,2.5,Core i7 7660U,256,0,SSD,No,Intel,Iris Plus Graphics 640 +HP,17-BS092ND (i3-6006U/8GB/256GB/W10),Notebook,17.3,8,Windows 10,2.5,639.9,Standard,1600,900,No,No,No,Intel,2.0,Core i3 6006U,256,0,SSD,No,Intel,HD Graphics 520 +Acer,Aspire E5-576G,Notebook,15.6,4,Windows 10,2.23,544.0,Full HD,1920,1080,No,No,No,Intel,2.0,Core i3 6006U,1024,0,HDD,No,Nvidia,GeForce 940MX +Acer,TravelMate B,Netbook,11.6,4,Windows 10,1.4,435.0,Standard,1366,768,No,No,No,Intel,1.6,Celeron Dual Core N3060,128,0,SSD,No,Intel,HD Graphics 400 +Asus,Pro P2540UA-AB51,Notebook,15.6,8,Windows 10,2.37,749.0,Full HD,1920,1080,No,No,No,Intel,2.5,Core i5 7200U,1024,0,HDD,No,Intel,HD Graphics 620 +Lenovo,IdeaPad 510s-14IKB,Notebook,14.0,8,No OS,1.5,799.0,Full HD,1920,1080,No,Yes,No,Intel,2.7,Core i7 7500U,512,0,SSD,No,AMD,Radeon R7 M460 +Lenovo,Thinkpad P51,Notebook,15.6,8,Windows 10,2.67,2090.0,Full HD,1920,1080,No,No,No,Intel,2.9,Core i7 7820HQ,256,0,SSD,No,Nvidia,Quadro M2200M +Asus,X541NA-PD1003Y (N4200/4GB/500GB/W10),Notebook,15.6,4,Windows 10,2.0,304.0,Standard,1366,768,No,No,No,Intel,1.1,Pentium Quad Core N4200,500,0,HDD,No,Intel,HD Graphics 500 +Acer,Aspire 5,Notebook,15.6,4,Windows 10,2.2,469.0,Standard,1366,768,No,No,No,Intel,2.0,Core i3 6006U,500,0,HDD,No,Nvidia,GeForce GTX 940MX +Dell,Inspiron 5570,Notebook,15.6,8,Windows 10,2.02,759.0,Full HD,1920,1080,No,No,No,Intel,1.6,Core i5 8250U,2048,0,HDD,No,AMD,Radeon 530 +HP,Omen 17-an006nv,Gaming,17.3,12,Windows 10,3.78,1699.0,Full HD,1920,1080,No,Yes,No,Intel,2.8,Core i7 7700HQ,1024,0,HDD,No,Nvidia,GeForce GTX 1060 +Lenovo,Thinkpad T460s,Ultrabook,14.0,12,Windows 10,1.4,1858.0,Quad HD+,2560,1440,No,Yes,No,Intel,2.6,Core i7 6600U,256,0,SSD,No,Intel,HD Graphics 520 +HP,Spectre x360,2 in 1 Convertible,13.3,8,Windows 10,1.29,1999.0,4K Ultra HD,3840,2160,Yes,Yes,No,Intel,1.8,Core i7 8550U,512,0,SSD,No,Intel,UHD Graphics 620 +HP,ZBook 15u,Notebook,15.6,8,Windows 10,1.9,1154.0,Full HD,1920,1080,No,No,No,Intel,2.5,Core i5 7200U,500,0,HDD,No,AMD,FirePro W4190M +Google,Pixelbook (Core,Ultrabook,12.3,8,Chrome OS,1.1,1275.0,Standard,2400,1600,Yes,No,No,Intel,1.2,Core i5 7Y57,128,0,SSD,No,Intel,HD Graphics 615 +Dell,Latitude 7390,Ultrabook,13.3,8,Windows 10,1.42,1841.85,Full HD,1920,1080,Yes,No,No,Intel,1.6,Core i5 8250U,256,0,SSD,No,Intel,UHD Graphics 620 +Asus,ZenBook Pro,Notebook,15.6,12,Windows 10,2.06,1299.0,4K Ultra HD,3840,2160,No,Yes,No,Intel,2.6,Core i7 6700HQ,128,1024,SSD,HDD,Intel,HD Graphics 530 +Dell,Latitude E5470,Notebook,14.0,8,Windows 10,1.79,740.0,Standard,1366,768,No,No,No,Intel,2.3,Core i3 6100U,128,0,SSD,No,Intel,HD Graphics 520 +Dell,Precision M5520,Workstation,15.6,8,Windows 10,1.78,2408.0,Full HD,1920,1080,No,No,No,Intel,2.8,Core i7 7700HQ,256,0,SSD,No,Nvidia,Quadro M1200 +Lenovo,Thinkpad T470,Notebook,14.0,8,Windows 10,1.7,1364.0,Full HD,1920,1080,No,No,No,Intel,2.5,Core i5 7200U,180,0,SSD,No,Intel,HD Graphics 620 +Dell,Inspiron 3576,Notebook,15.6,8,Windows 10,2.2,675.0,Full HD,1920,1080,No,No,No,Intel,1.6,Core i5 8250U,1024,0,HDD,No,AMD,Radeon 520 +Toshiba,Portege X30-D-10J,Notebook,13.3,8,Windows 10,1.05,1672.0,Full HD,1920,1080,No,Yes,No,Intel,2.5,Core i5 7200U,256,0,SSD,No,Intel,HD Graphics 620 +Dell,Inspiron 7570,Notebook,15.6,8,Windows 10,2.16,1262.0,Full HD,1920,1080,No,Yes,No,Intel,1.8,Core i7 8550U,512,0,SSD,No,Nvidia,GeForce 940MX +Dell,Vostro 3568,Notebook,15.6,4,Windows 10,2.18,586.6,Standard,1366,768,No,No,No,Intel,2.4,Core i3 7100U,1024,0,HDD,No,Intel,HD Graphics 620 +HP,ProBook 430,Notebook,13.3,4,Windows 10,1.49,726.0,Full HD,1920,1080,No,Yes,No,Intel,1.6,Core i5 8250U,128,0,SSD,No,Intel,UHD Graphics 620 +Chuwi,"Lapbook 15,6",Notebook,15.6,4,Windows 10,1.89,248.9,Full HD,1920,1080,No,No,No,Intel,1.44,Atom x5-Z8350,64,0,Flash Storage,No,Intel,HD Graphics +Lenovo,ThinkPad E570,Notebook,15.6,4,Windows 10,2.3,565.0,Standard,1366,768,No,No,No,Intel,2.0,Core i3 6006U,128,0,SSD,No,Intel,HD Graphics 520 +Lenovo,ThinkPad E480,Notebook,14.0,8,Windows 10,1.75,1049.0,Full HD,1920,1080,No,Yes,No,Intel,1.6,Core i5 8250U,256,0,SSD,No,Intel,UHD Graphics 620 +Dell,Precision 3520,Workstation,15.6,16,Windows 10,2.17,2338.0,Full HD,1920,1080,No,Yes,No,Intel,2.7,Core i7 6820HQ,512,0,SSD,No,Nvidia,Quadro M620 +Dell,XPS 15,Notebook,15.6,16,Windows 10,2.06,1899.0,Full HD,1920,1080,No,No,No,Intel,2.8,Core i7 7700HQ,512,0,SSD,No,Nvidia,GeForce GTX 1050 +Lenovo,Thinkpad X270,Ultrabook,12.5,16,Windows 10,1.36,1798.0,Full HD,1920,1080,No,Yes,No,Intel,2.7,Core i7 7500U,512,0,SSD,No,Intel,HD Graphics 620 +Asus,Zenbook UX390UA,Ultrabook,12.5,16,Windows 10,0.91,1950.0,Full HD,1920,1080,No,No,No,Intel,2.7,Core i7 7500U,512,0,SSD,No,Intel,HD Graphics 620 +Lenovo,Thinkpad E570,Notebook,15.6,8,Windows 10,2.3,1011.99,Full HD,1920,1080,No,Yes,No,Intel,2.5,Core i5 7200U,256,0,SSD,No,Nvidia,GeForce 940MX +Toshiba,Portege X30-D-10L,Ultrabook,13.3,32,Windows 10,1.05,2799.0,Full HD,1920,1080,Yes,No,No,Intel,2.7,Core i7 7500U,512,0,SSD,No,Intel,HD Graphics 620 +Asus,VivoBook Pro,Gaming,15.6,8,Windows 10,1.99,1350.0,Full HD,1920,1080,No,No,No,Intel,2.8,Core i7 7700HQ,128,1024,SSD,HDD,Nvidia,GeForce GTX 1050 +Acer,Aspire 5,Notebook,15.6,8,Windows 10,2.2,579.0,Standard,1366,768,No,No,No,AMD,2.5,A10-Series 9620P,1024,0,HDD,No,AMD,Radeon RX 540 +Asus,Rog G752VL-UH71T,Gaming,17.3,24,Windows 10,4.33,1269.0,Full HD,1920,1080,Yes,Yes,No,Intel,2.6,Core i7 6700HQ,256,1024,SSD,HDD,Nvidia,GeForce GTX 965M +Lenovo,Thinkpad X260,Ultrabook,12.5,8,Windows 10,1.3,1099.0,Standard,1366,768,No,Yes,No,Intel,2.3,Core i5 6200U,180,0,SSD,No,Intel,HD Graphics 520 +Lenovo,Ideapad 520-15IKBR,Notebook,15.6,8,Windows 10,2.17,898.9,Full HD,1920,1080,No,No,No,Intel,1.8,Core i7 8550U,256,0,SSD,No,Intel,UHD Graphics 620 +HP,EliteBook 840,Notebook,14.0,8,Windows 10,1.48,1749.0,Full HD,1920,1080,No,No,No,Intel,2.8,Core i7 7600U,1024,0,SSD,No,Intel,HD Graphics 620 +Lenovo,ThinkPad 13,Notebook,13.3,8,Windows 10,1.4,949.0,Full HD,1920,1080,No,Yes,No,Intel,2.4,Core i3 7100U,256,0,SSD,No,Intel,HD Graphics 620 +Lenovo,ThinkPad L570,Notebook,15.6,8,Windows 10,2.3,911.0,Full HD,1920,1080,No,Yes,No,Intel,2.5,Core i5 7200U,256,0,SSD,No,Intel,HD Graphics 620 +Asus,VivoBook E201NA,Netbook,11.6,4,Windows 10 S,1.2,340.0,Standard,1366,768,No,No,No,Intel,1.1,Celeron Dual Core N3350,64,0,Flash Storage,No,Intel,HD Graphics 500 +HP,15-BS026nv (i5-7200U/8GB/256GB/Radeon,Notebook,15.6,8,Windows 10,1.91,618.99,Standard,1366,768,No,No,No,Intel,2.5,Core i5 7200U,256,0,SSD,No,AMD,Radeon 520 +Lenovo,Yoga 920-13IKB,2 in 1 Convertible,13.9,8,Windows 10,1.4,1599.0,Full HD,1920,1080,Yes,Yes,No,Intel,1.6,Core i5 8250U,256,0,SSD,No,Intel,UHD Graphics 620 +Lenovo,IdeaPad 320-14IAP,Notebook,14.0,4,Windows 10,2.1,299.0,Standard,1366,768,No,No,No,Intel,1.1,Celeron Dual Core N3350,500,0,HDD,No,Intel,HD Graphics 500 +Lenovo,Chromebook N23,Netbook,11.6,4,Chrome OS,1.25,265.0,Standard,1366,768,No,No,No,Intel,1.6,Celeron Dual Core N3060,16,0,SSD,No,Intel,HD Graphics 400 +Lenovo,ThinkPad 13,Notebook,13.3,8,Windows 10,1.44,949.0,Full HD,1920,1080,No,No,No,Intel,2.5,Core i5 7200U,256,0,SSD,No,Intel,HD Graphics 620 +Asus,ZenBook UX510UX-CN211T,Notebook,15.6,8,Windows 10,2.0,1224.0,Full HD,1920,1080,No,No,No,Intel,2.7,Core i7 7500U,256,1024,SSD,HDD,Intel,HD Graphics 620 +Acer,Aspire A515-51G-59QF,Notebook,15.6,4,Windows 10,2.2,613.0,Full HD,1920,1080,No,Yes,No,Intel,1.6,Core i5 8250U,1024,0,HDD,No,Nvidia,GeForce MX150 +HP,Envy 13-AB002nv,Ultrabook,13.3,8,Windows 10,1.34,1323.0,Full HD,1920,1080,No,Yes,No,Intel,2.7,Core i7 7500U,512,0,SSD,No,Intel,HD Graphics 620 +Lenovo,Legion Y520-15IKBN,Gaming,15.6,8,No OS,2.4,1149.0,Full HD,1920,1080,No,Yes,No,Intel,2.8,Core i7 7700HQ,256,1024,SSD,HDD,Nvidia,GeForce GTX 1060 +Dell,XPS 13,Ultrabook,13.3,8,Windows 10,1.29,899.0,Full HD,1920,1080,Yes,Yes,No,Intel,2.5,Core i5 7200U,128,0,SSD,No,Intel,HD Graphics 620 +Acer,Aspire A515-51G,Notebook,15.6,4,Windows 10,2.2,639.0,Full HD,1920,1080,No,No,No,Intel,2.7,Core i7 7500U,500,0,HDD,No,Nvidia,GeForce 940MX +Dell,Vostro 5568,Notebook,15.6,8,Windows 10,2.18,836.0,Full HD,1920,1080,No,No,No,Intel,2.5,Core i5 7200U,1024,0,HDD,No,Intel,HD Graphics 620 +Dell,Inspiron 5570,Notebook,15.6,16,Windows 10,2.2,1219.24,Full HD,1920,1080,No,No,No,Intel,1.8,Core i7 8550U,256,2048,SSD,HDD,AMD,Radeon 530 +Xiaomi,Mi Notebook,Notebook,15.6,16,No OS,1.95,1399.95,Full HD,1920,1080,No,Yes,No,Intel,1.8,Core i7 8550U,256,0,SSD,No,Nvidia,GeForce MX150 +Asus,VivoBook E12,Netbook,11.6,2,Windows 10,1.1,245.0,Standard,1366,768,No,No,No,Intel,1.1,Celeron Dual Core N3350,32,0,Flash Storage,No,Intel,HD Graphics 500 +HP,15-bs190od (i5-8250U/4GB/1TB/W10),Notebook,15.6,4,Windows 10,2.04,521.47,Standard,1366,768,Yes,No,No,Intel,1.6,Core i5 8250U,1024,0,HDD,No,Intel,UHD Graphics 620 +Asus,ROG Zephyrus,Gaming,15.6,24,Windows 10,2.24,2968.0,Full HD,1920,1080,No,No,No,Intel,2.8,Core i7 7700HQ,512,0,SSD,No,Nvidia,GeForce GTX1080 +HP,Probook 450,Notebook,15.6,8,Windows 10,2.04,889.0,Full HD,1920,1080,No,No,No,Intel,2.5,Core i5 7200U,256,0,SSD,No,Nvidia,GeForce 930MX +Asus,FX753VE-GC155T (i7-7700HQ/16GB/1TB,Gaming,17.3,16,Windows 10,3.0,1504.0,Full HD,1920,1080,No,No,No,Intel,2.8,Core i7 7700HQ,256,1024,SSD,HDD,Nvidia,GeForce GTX1050 Ti +Lenovo,Legion Y720-15IKB,Gaming,15.6,8,Windows 10,3.2,1399.0,Full HD,1920,1080,No,Yes,No,Intel,2.8,Core i7 7700HQ,256,1024,SSD,HDD,Nvidia,GeForce GTX 1060 +HP,Spectre X360,Ultrabook,13.3,8,Windows 10,1.32,1399.0,Full HD,1920,1080,No,Yes,No,Intel,2.7,Core i7 7500U,256,0,SSD,No,Intel,HD Graphics 620 +Dell,Latitude 5480,Notebook,14.0,8,Windows 10,1.64,1279.73,Full HD,1920,1080,No,No,No,Intel,2.6,Core i5 7300U,256,0,SSD,No,Intel,HD Graphics 620 +HP,ProBook 440,Notebook,15.6,4,Windows 10,1.63,689.0,Standard,1366,768,No,No,No,Intel,2.0,Core i3 6006U,128,0,SSD,No,Intel,HD Graphics 520 +Dell,Inspiron 5770,Notebook,17.3,8,Linux,2.8,889.0,Full HD,1920,1080,No,Yes,No,Intel,1.6,Core i5 8250U,128,1024,SSD,HDD,AMD,Radeon 530 +Lenovo,ThinkPad L470,Notebook,14.0,8,Windows 7,2.02,1340.0,Full HD,1920,1080,No,No,No,Intel,2.3,Core i5 6200U,256,0,SSD,No,Intel,HD Graphics 520 +Lenovo,IdeaPad 320-15IKB,Notebook,15.6,4,Windows 10,2.2,799.0,Full HD,1920,1080,No,No,No,Intel,2.7,Core i7 7500U,1024,0,HDD,No,Nvidia,GeForce 920MX +Lenovo,IdeaPad 320-15ISK,Notebook,15.6,8,No OS,2.2,459.0,Standard,1366,768,No,No,No,Intel,2.0,Core i3 6006U,2048,0,HDD,No,Nvidia,GeForce 920MX +Dell,Inspiron 3567,Notebook,15.6,4,Windows 10,2.3,585.0,Full HD,1920,1080,No,No,No,Intel,2.5,Core i5 7200U,500,0,HDD,No,AMD,Radeon R5 M430 +Dell,Latitude 5580,Notebook,15.6,8,Windows 10,1.9,1377.0,Full HD,1920,1080,No,No,No,Intel,2.8,Core i5 7440HQ,256,0,SSD,No,Intel,HD Graphics 620 +Dell,Alienware 17,Gaming,17.3,16,Windows 10,4.42,3012.77,Full HD,1920,1080,No,Yes,No,Intel,2.8,Core i7 7700HQ,128,1024,SSD,HDD,Nvidia,GeForce GTX 1070 +Toshiba,Satellite Pro,Notebook,15.6,8,Windows 10,2.0,860.0,Full HD,1920,1080,No,Yes,No,Intel,2.5,Core i5 7200U,500,0,HDD,No,Intel,HD Graphics 620 +Asus,Zenbook UX510UW-FI095T,Notebook,15.6,8,Windows 10,2.0,1299.0,4K Ultra HD,3840,2160,No,Yes,No,Intel,2.7,Core i7 7500U,256,1024,SSD,HDD,Nvidia,GeForce GTX 960M +Mediacom,SmartBook Edge,Notebook,13.3,4,Windows 10,1.2,369.0,Full HD,1920,1080,No,Yes,No,Intel,1.1,Celeron Quad Core N3450,32,0,SSD,No,Intel,HD Graphics 500 +Asus,ROG Strix,Gaming,15.6,8,Windows 10,2.3,1649.0,Full HD,1920,1080,No,Yes,No,Intel,2.5,Core i5 7300HQ,128,1024,SSD,HDD,Nvidia,GeForce GTX 1060 +Dell,Latitude 5580,Notebook,15.6,8,Windows 10,1.93,1369.0,Full HD,1920,1080,No,No,No,Intel,2.8,Core i7 7600U,256,0,SSD,No,Nvidia,GeForce 930MX +Dell,Inspiron 5570,Notebook,15.6,8,Windows 10,2.2,797.41,Full HD,1920,1080,No,No,No,Intel,1.6,Core i5 8250U,256,0,SSD,No,AMD,Radeon 530 +HP,250 G6,Notebook,15.6,4,Windows 10,1.86,398.99,Full HD,1920,1080,No,No,No,Intel,1.6,Pentium Quad Core N3710,256,0,SSD,No,Intel,HD Graphics 405 +HP,Omen 15-ce006nv,Gaming,17.3,12,Windows 10,2.62,1799.0,Full HD,1920,1080,No,No,No,Intel,2.8,Core i7 7700HQ,1024,0,HDD,No,Nvidia,GeForce GTX 1060 +Lenovo,Thinkpad E470,Notebook,14.0,8,Windows 10,1.87,859.0,Full HD,1920,1080,No,Yes,No,Intel,2.7,Core i7 7500U,256,0,SSD,No,Nvidia,GeForce 940MX +Dell,XPS 13,Ultrabook,13.3,8,Windows 10,1.2,1399.0,Quad HD+,3200,1800,Yes,No,No,Intel,1.8,Core i7 8550U,256,0,SSD,No,Intel,UHD Graphics 620 +Dell,Vostro 5468,Notebook,14.0,4,Windows 10,1.6,735.87,Full HD,1920,1080,No,No,No,Intel,2.0,Core i3 6006U,128,0,SSD,No,Intel,HD Graphics 520 +HP,Envy 13-AB020nr,Ultrabook,13.3,8,Windows 10,1.34,1145.0,Quad HD+,3200,1800,No,Yes,No,Intel,2.7,Core i7 7500U,256,0,SSD,No,Intel,HD Graphics 620 +Acer,Aspire 7,Gaming,15.6,8,Linux,2.4,798.0,Full HD,1920,1080,No,No,No,Intel,2.5,Core i5 7300HQ,1024,0,HDD,No,Nvidia,GeForce GTX 1050 +Asus,VivoBook X540YA-XX519T,Notebook,15.6,4,Windows 10,2.0,349.0,Standard,1366,768,No,No,No,AMD,1.8,E-Series 7110,500,0,HDD,No,AMD,Radeon R2 Graphics +HP,ProBook 450,Notebook,15.6,4,Windows 10,2.1,705.5,Full HD,1920,1080,No,No,No,Intel,2.4,Core i3 7100U,128,0,SSD,No,Intel,HD Graphics 620 +Lenovo,ThinkPad E470,Notebook,14.0,4,Windows 10,1.87,785.0,Full HD,1920,1080,No,No,No,Intel,2.5,Core i5 7200U,500,0,HDD,No,Intel,HD Graphics 620 +Lenovo,V310-15ISK (i5-6200U/4GB/1TB/FHD/No,Notebook,15.6,4,No OS,2.15,462.35,Full HD,1920,1080,No,No,No,Intel,2.3,Core i5 6200U,1024,0,HDD,No,Intel,HD Graphics 520 +HP,250 G6,Notebook,15.6,4,Windows 10,1.86,397.0,Full HD,1920,1080,No,No,No,Intel,2.0,Core i3 6006U,500,0,HDD,No,Intel,HD Graphics 520 +Lenovo,ThinkPad T570,Notebook,15.6,8,Windows 10,1.99,1729.0,Full HD,1920,1080,No,Yes,No,Intel,2.7,Core i7 7500U,512,0,SSD,No,Intel,HD Graphics 620 +Lenovo,IdeaPad 320-15ISK,Notebook,15.6,4,Windows 10,2.2,499.0,Full HD,1920,1080,No,No,No,Intel,2.0,Core i3 6006U,128,0,SSD,No,Intel,HD Graphics 520 +Dell,Latitude 5580,Notebook,15.6,8,Windows 10,1.9,1116.99,Full HD,1920,1080,No,No,No,Intel,2.5,Core i5 7200U,256,0,SSD,No,Intel,HD Graphics 620 +Dell,Alienware 17,Gaming,17.3,16,Windows 10,4.42,2699.0,Full HD,1920,1080,No,Yes,No,Intel,2.8,Core i7 7700HQ,256,1024,SSD,HDD,Nvidia,GeForce GTX 1070 +HP,17-X047na (i3-6006U/8GB/1TB/W10),Notebook,17.3,8,Windows 10,2.65,544.15,Standard,1600,900,No,No,No,Intel,2.0,Core i3 6006U,1024,0,HDD,No,Intel,HD Graphics 520 +HP,ProBook 470,Notebook,17.3,8,Windows 10,2.63,1280.0,Full HD,1920,1080,No,No,No,Intel,2.7,Core i7 7500U,1024,0,HDD,No,Nvidia,GeForce 930MX +Asus,A541NA-GO342 (N3350/4GB/500GB/Linux),Notebook,15.6,4,Linux,2.0,224.0,Standard,1366,768,No,No,No,Intel,1.1,Celeron Dual Core N3350,500,0,HDD,No,Intel,HD Graphics 500 +Mediacom,SmartBook 130,Notebook,13.3,4,Windows 10,1.35,255.0,Full HD,1920,1080,No,Yes,No,Intel,1.44,Atom x5-Z8350,32,0,Flash Storage,No,Intel,HD Graphics +Lenovo,IdeaPad 320-17IKB,Notebook,17.3,6,Windows 10,2.8,949.0,Standard,1600,900,No,No,No,Intel,2.7,Core i7 7500U,128,1024,SSD,HDD,Nvidia,GeForce 940MX +HP,15-bw007nv (A10-9620P/6GB/128GB/Radeon,Notebook,15.6,6,Windows 10,1.91,568.9,Full HD,1920,1080,No,Yes,No,AMD,2.5,A10-Series A10-9620P,128,0,SSD,No,AMD,Radeon 530 +Dell,Vostro 3568,Notebook,15.6,4,Windows 10,2.18,617.9,Standard,1366,768,No,No,No,Intel,2.0,Core i3 6006U,1024,0,HDD,No,AMD,Radeon R5 M420 +Acer,Spin SP111-31,2 in 1 Convertible,11.6,4,Windows 10,1.25,349.0,Full HD,1920,1080,Yes,Yes,No,Intel,2.0,Celeron Dual Core N3350,32,0,Flash Storage,No,Intel,HD Graphics 500 +Lenovo,V330-15IKB (i3-7130U/4GB/128GB/FHD/W10),Notebook,15.6,4,Windows 10,2.05,630.0,Full HD,1920,1080,No,No,No,Intel,2.7,Core i3 7130U,128,0,SSD,No,Intel,HD Graphics 620 +HP,EliteBook 1030,Ultrabook,13.3,16,Windows 10,1.16,1965.0,Quad HD+,3200,1800,Yes,Yes,No,Intel,1.2,Core M 6Y75,512,0,SSD,No,Intel,HD Graphics 515 +Lenovo,Thinkpad P71,Notebook,17.3,8,Windows 10,3.4,2999.0,Full HD,1920,1080,No,Yes,No,Intel,2.8,Core i7 7700HQ,256,0,SSD,No,Nvidia,Quadro M620M +Asus,FX553VD-DM627T (i5-7300HQ/8GB/1TB,Notebook,15.6,8,Windows 10,2.5,839.0,Full HD,1920,1080,No,No,No,Intel,2.5,Core i5 7300HQ,128,1024,SSD,HDD,Nvidia,GeForce GTX 1050 +Dell,XPS 13,Ultrabook,13.3,8,Windows 10,1.21,1599.0,4K Ultra HD,3840,2160,Yes,Yes,No,Intel,1.6,Core i5 8250U,128,0,SSD,No,Intel,UHD Graphics 620 +Dell,Latitude 5580,Notebook,15.6,4,Windows 10,1.93,959.0,Standard,1366,768,No,No,No,Intel,2.6,Core i5 7300U,500,0,HDD,No,Intel,HD Graphics 620 +Fujitsu,Lifebook A557,Notebook,15.6,8,Windows 10,2.2,739.0,Standard,1366,768,No,No,No,Intel,2.5,Core i5 7200U,1024,0,HDD,No,Intel,HD Graphics 620 +Lenovo,IdeaPad 320-15IAP,Notebook,15.6,4,Windows 10,2.2,344.0,Full HD,1920,1080,No,No,No,Intel,1.1,Pentium Quad Core N4200,500,0,HDD,No,Intel,HD Graphics 505 +Lenovo,ThinkPad L470,Notebook,14.0,4,Windows 10,2.02,990.0,Standard,1366,768,No,No,No,Intel,2.5,Core i5 7200U,500,0,HDD,No,Intel,HD Graphics 620 +HP,ZBook 17,Workstation,17.3,8,Windows 10,3.14,1860.99,Standard,1600,900,No,No,No,Intel,2.8,Core i5 7440HQ,500,0,HDD,No,Nvidia,Quadro M1200 +HP,14-am079na (N3710/8GB/2TB/W10),Notebook,14.0,8,Windows 10,1.94,389.0,Standard,1366,768,No,No,No,Intel,1.6,Pentium Quad Core N3710,2048,0,HDD,No,Intel,HD Graphics 405 +HP,15-cd005nv (A9-9420/6GB/256GB/Radeon,Notebook,15.6,6,Windows 10,1.95,649.0,Full HD,1920,1080,No,Yes,No,AMD,3.0,A9-Series A9-9420,256,0,SSD,No,AMD,Radeon 530 +Lenovo,Thinkpad E570,Notebook,15.6,8,Windows 10,2.3,830.0,Full HD,1920,1080,No,No,No,Intel,2.5,Core i5 7200U,256,0,SSD,No,Intel,HD Graphics 620 +Lenovo,V330-15IKB (i5-8250U/4GB/500GB/FHD/W10),Notebook,15.6,4,Windows 10,2.05,685.0,Full HD,1920,1080,No,No,No,Intel,1.6,Core i5 8250U,500,0,HDD,No,Intel,HD Graphics 620 +Mediacom,SmartBook 141,Notebook,14.0,4,Windows 10,1.4,249.0,Full HD,1920,1080,No,No,No,Intel,1.44,Atom x5-Z8350,32,0,SSD,No,Intel,HD Graphics +Toshiba,Tecra X40-D-10H,Ultrabook,14.0,16,Windows 10,1.24,1865.0,Full HD,1920,1080,Yes,No,No,Intel,2.7,Core i7 7500U,512,0,SSD,No,Intel,HD Graphics 620 +Lenovo,IdeaPad Y910-17ISK,Gaming,17.3,32,Windows 10,4.6,2663.0,Full HD,1920,1080,No,Yes,No,Intel,2.7,Core i7 6820HK,256,1024,SSD,HDD,Nvidia,GeForce GTX 1070 +MSI,GT73VR Titan,Gaming,17.3,16,Windows 10,4.14,2729.0,Full HD,1920,1080,No,No,No,Intel,2.9,Core i7 7820HK,512,1024,SSD,HDD,Nvidia,GeForce GTX 1070 +Dell,Inspiron 3567,Notebook,15.6,8,Linux,2.2,749.01,Full HD,1920,1080,No,No,No,Intel,2.7,Core i7 7500U,256,0,SSD,No,AMD,Radeon R5 M430 +Mediacom,SmartBook Edge,Notebook,14.0,4,Windows 10,1.45,389.0,Full HD,1920,1080,No,Yes,No,Intel,1.1,Celeron Quad Core N3450,32,0,SSD,No,Intel,HD Graphics 500 +Dell,Latitude 5580,Notebook,15.6,8,Windows 10,1.9,1008.52,Standard,1366,768,No,No,No,Intel,2.6,Core i5 7300U,500,0,HDD,No,Intel,HD Graphics 620 +HP,ProBook 430,Notebook,13.3,4,Windows 10,1.49,719.0,Full HD,1920,1080,No,No,No,Intel,2.4,Core i3 7100U,128,0,SSD,No,Intel,HD Graphics 620 +Dell,Latitude 5580,Notebook,15.6,16,Windows 10,1.93,1537.39,Full HD,1920,1080,No,No,No,Intel,2.8,Core i7 7600U,256,0,SSD,No,Nvidia,GeForce 930MX +Dell,Chromebook 11,Netbook,11.6,4,Chrome OS,1.26,295.0,Standard,1366,768,No,No,No,Intel,1.6,Celeron Dual Core N3060,16,0,Flash Storage,No,Intel,HD Graphics 400 +MSI,GT80S 6QE,Gaming,17.3,16,Windows 10,4.5,2349.0,Full HD,1920,1080,No,No,No,Intel,2.7,Core i7 6820HK,128,1024,SSD,HDD,Nvidia,GeForce GTX 980M +HP,Omen 17-AN010nv,Gaming,17.3,16,Windows 10,3.78,1498.0,Full HD,1920,1080,No,Yes,No,Intel,2.8,Core i7 7700HQ,256,1024,SSD,HDD,Nvidia,GeForce GTX 1050 +Lenovo,Thinkpad T460s,Ultrabook,14.0,12,Windows 10,1.4,1673.0,Full HD,1920,1080,No,Yes,No,Intel,2.6,Core i7 6600U,256,0,SSD,No,Intel,HD Graphics 520 +Lenovo,Ideapad 320-15IKBR,Notebook,15.6,12,Windows 10,2.2,609.0,Standard,1366,768,Yes,No,No,Intel,1.8,Core i7 8550U,1024,0,HDD,No,Intel,HD Graphics 620 +Asus,ROG Strix,Gaming,17.3,8,Windows 10,2.73,1770.0,Full HD,1920,1080,No,Yes,No,Intel,2.5,Core i5 7300HQ,128,1024,SSD,HDD,Nvidia,GeForce GTX 1060 +Asus,TP501UA-CJ131T (i5-7200U/8GB/1TB/W10),2 in 1 Convertible,15.6,8,Windows 10,2.2,739.0,Standard,1366,768,Yes,No,No,Intel,2.5,Core i5 7200U,1024,0,HDD,No,Intel,HD Graphics 520 +Lenovo,IdeaPad 320-15ABR,Notebook,15.6,12,Windows 10,2.2,949.0,Full HD,1920,1080,No,No,No,AMD,3.6,A12-Series 9720P,512,0,SSD,No,AMD,Radeon 530 +Dell,Inspiron 3179,2 in 1 Convertible,11.6,4,Windows 10,1.39,603.0,Standard,1366,768,Yes,No,No,Intel,1.0,Core M 7Y30,128,0,SSD,No,Intel,HD Graphics 615 +Samsung,Notebook Odyssey,Notebook,15.6,16,Windows 10,2.5,1699.0,Full HD,1920,1080,No,No,No,Intel,2.8,Core i7 7700HQ,128,1024,SSD,HDD,Nvidia,GeForce GTX 1050 +Lenovo,V320-17ISK (i3-6006U/4GB/500GB/FHD/No,Notebook,17.3,4,No OS,2.8,529.0,Full HD,1920,1080,No,No,No,Intel,2.0,Core i3 6006U,500,0,HDD,No,Intel,HD Graphics 520 +Lenovo,IdeaPad 110-15ISK,Notebook,15.6,8,Windows 10,2.29,459.0,Standard,1366,768,No,No,No,Intel,2.3,Core i3 6100U,1024,0,HDD,No,Intel,HD Graphics 520 +Lenovo,ThinkPad Yoga,2 in 1 Convertible,13.3,8,Windows 10,1.37,2025.0,Full HD,1920,1080,Yes,Yes,No,Intel,2.7,Core i7 7500U,512,0,SSD,No,Intel,HD Graphics 620 +Lenovo,Thinkpad T470p,Notebook,14.0,8,Windows 10,1.7,1474.0,Full HD,1920,1080,No,Yes,No,Intel,2.5,Core i5 7300HQ,256,0,SSD,No,Intel,HD Graphics 630 +Dell,Latitude 5289,2 in 1 Convertible,12.5,8,Windows 10,1.34,1670.0,Full HD,1920,1080,Yes,No,No,Intel,2.5,Core i5 7200U,256,0,SSD,No,Intel,HD Graphics 620 +Dell,Precision 3520,Workstation,15.6,8,Windows 10,2.06,1763.0,Full HD,1920,1080,Yes,No,No,Intel,2.8,Core i7 7700HQ,256,0,SSD,No,Nvidia,Quadro M620 +HP,EliteBook 850,Notebook,15.6,8,Windows 10,1.84,1219.0,Full HD,1920,1080,No,No,No,Intel,2.7,Core i7 7500U,256,0,SSD,No,Intel,HD Graphics 620 +HP,ProBook 450,Notebook,15.6,4,Windows 10,2.1,668.48,Standard,1366,768,No,No,No,Intel,2.4,Core i3 7100U,500,0,HDD,No,Intel,HD Graphics 620 +Acer,Aspire 1,Notebook,14.0,4,Windows 10,1.6,329.0,Full HD,1920,1080,No,No,No,Intel,1.1,Celeron Quad Core N3450,32,0,Flash Storage,No,Intel,HD Graphics 500 +MSI,Laptop MSI,Gaming,17.3,16,Windows 10,4.14,2199.0,Full HD,1920,1080,No,No,No,Intel,2.7,Core i7 6820HK,128,1024,SSD,HDD,Nvidia,GeForce GTX 970M +Dell,Vostro 3568,Notebook,15.6,4,Linux,2.18,465.0,Standard,1366,768,No,No,No,Intel,2.0,Core i3 6006U,1024,0,HDD,No,AMD,Radeon R5 M420 +MSI,GS63VR 7RF,Gaming,15.6,16,Windows 10,1.8,2299.0,4K Ultra HD,3840,2160,No,No,No,Intel,2.8,Core i7 7700HQ,256,2048,SSD,HDD,Nvidia,GeForce GTX 1060 +Toshiba,Tecra Z50-C-144,Notebook,15.6,8,Windows 10,2.2,1399.0,Full HD,1920,1080,No,Yes,No,Intel,2.5,Core i7 6500U,256,0,SSD,No,Intel,HD Graphics 520 +Lenovo,IdeaPad 310-15IKB,Notebook,15.6,6,Windows 10,2.4,564.0,Full HD,1920,1080,No,No,No,Intel,2.5,Core i5 7200U,1024,0,HDD,No,Intel,HD Graphics 620 +Lenovo,Yoga 720-15IKB,2 in 1 Convertible,15.6,8,Windows 10,2.0,1299.0,Full HD,1920,1080,Yes,Yes,No,Intel,2.8,Core i7 7700HQ,256,0,SSD,No,Intel,HD Graphics 630 +Acer,Swift SF114-31-P5HY,Notebook,14.0,4,Windows 10,1.6,349.0,Standard,1366,768,No,No,No,Intel,1.6,Pentium Quad Core N3710,128,0,Flash Storage,No,Intel,HD Graphics 405 +Lenovo,Thinkpad P51,Notebook,15.6,32,Windows 10,2.5,4899.0,4K Ultra HD,3840,2160,No,Yes,No,Intel,3.1,Xeon E3-1535M v6,1024,0,SSD,No,Nvidia,Quadro M2200M +Dell,Inspiron 7559,Gaming,15.6,16,Windows 10,2.59,879.01,Full HD,1920,1080,No,No,No,Intel,2.6,Core i7 6700HQ,1024,0,HDD,No,Nvidia,GeForce GTX 960 +Dell,Vostro 3568,Notebook,15.6,4,Linux,2.18,443.9,Standard,1366,768,No,No,No,Intel,2.0,Core i3 6006U,1024,0,HDD,No,Intel,HD Graphics 520 +Dell,Inspiron 3567,Notebook,15.6,4,Linux,2.25,359.0,Standard,1366,768,No,No,No,Intel,2.0,Core i3 6006U,1024,0,HDD,No,Intel,HD Graphics 520 +Dell,Latitude 5580,Notebook,15.6,4,Linux,1.93,869.0,Standard,1366,768,No,No,No,Intel,2.6,Core i5 7300U,500,0,HDD,No,Intel,HD Graphics 620 +Asus,FX753VD-GC007T (i7-7700HQ/8GB/1TB,Gaming,17.3,8,Windows 10,3.0,1168.0,Full HD,1920,1080,No,No,No,Intel,2.8,Core i7 7700HQ,128,1024,SSD,HDD,Nvidia,GeForce GTX 1050 +Dell,Vostro 3568,Notebook,15.6,4,Linux,2.18,569.0,Full HD,1920,1080,No,No,No,Intel,2.5,Core i5 7200U,128,0,SSD,No,AMD,Radeon R5 M420 +HP,EliteBook 850,Ultrabook,15.6,8,Windows 10,1.84,1389.0,Full HD,1920,1080,No,No,No,Intel,2.7,Core i7 7500U,512,0,SSD,No,Intel,HD Graphics 620 +MSI,GT62VR 7RE,Gaming,15.6,16,Windows 10,2.94,2267.86,Full HD,1920,1080,No,No,No,Intel,2.8,Core i7 7700HQ,256,1024,SSD,HDD,Nvidia,GeForce GTX 1070 +Acer,CB5-132T-C9KK (N3160/4GB/32GB/Chrome,2 in 1 Convertible,11.6,4,Chrome OS,1.25,379.0,Standard,1366,768,Yes,Yes,No,Intel,1.6,Celeron Quad Core N3160,32,0,Flash Storage,No,Intel,HD Graphics 400 +HP,ProBook 650,Notebook,14.0,8,Windows 10,2.31,1124.0,Standard,1366,768,No,No,No,Intel,2.6,Core i5 7300U,256,0,SSD,No,Intel,HD Graphics 620 +Lenovo,ThinkPad T470,Notebook,14.0,8,Windows 7,1.65,1465.0,Full HD,1920,1080,No,No,No,Intel,2.3,Core i5 6200U,256,0,SSD,No,Intel,HD Graphics 520 +Dell,Inspiron 5570,Notebook,15.6,4,Windows 10,2.2,776.0,Full HD,1920,1080,No,No,No,Intel,1.6,Core i5 8250U,1024,0,HDD,No,AMD,Radeon 530 +Fujitsu,LifeBook A557,Notebook,15.6,8,Windows 10,2.2,799.0,Standard,1366,768,No,No,No,Intel,2.5,Core i5 7200U,256,0,SSD,No,Intel,HD Graphics 620 +HP,EliteBook 850,Notebook,15.6,4,Windows 7,1.88,932.0,Standard,1366,768,No,No,No,Intel,2.3,Core i5 6200U,500,0,HDD,No,Intel,HD Graphics 520 +Lenovo,IdeaPad 320-15IKB,Notebook,15.6,8,Windows 10,2.2,899.0,Full HD,1920,1080,No,No,No,Intel,2.7,Core i7 7500U,1024,0,HDD,No,Nvidia,GeForce 920MX +Mediacom,SmartBook 140,Notebook,14.0,2,Windows 10,1.4,239.0,Full HD,1920,1080,No,No,No,Intel,1.44,Atom x5-Z8350,32,0,Flash Storage,No,Intel,HD Graphics +Lenovo,IdeaPad 320-15IKBN,Notebook,15.6,4,No OS,2.2,468.0,Full HD,1920,1080,No,No,No,Intel,2.5,Core i5 7200U,128,0,SSD,No,Intel,HD Graphics 620 +Asus,Q304UA-BHI5T11 (i5-7200U/6GB/1TB/FHD/W10),2 in 1 Convertible,13.3,6,Windows 10,1.5,639.01,Full HD,1920,1080,Yes,No,No,Intel,2.5,Core i5 7200U,1024,0,HDD,No,Intel,HD Graphics 620 +Dell,XPS 15,Notebook,15.6,8,Windows 10,2.0,1820.0,Full HD,1920,1080,No,No,No,Intel,2.8,Core i7 7700HQ,256,0,SSD,No,Nvidia,GeForce GTX 1050 +Asus,ZenBook 3,Ultrabook,14.0,16,Windows 10,1.1,1900.0,Full HD,1920,1080,No,No,No,Intel,2.7,Core i7 7500U,512,0,SSD,No,Intel,HD Graphics 620 +Dell,Inspiron 7567,Gaming,15.6,16,Windows 10,2.62,1479.0,Full HD,1920,1080,No,No,No,Intel,2.8,Core i7 7700HQ,256,1024,SSD,HDD,Nvidia,GeForce GTX 1050 Ti +Lenovo,V330-15IKB (i5-8250U/4GB/256GB/FHD/W10),Notebook,15.6,4,Windows 10,1.8,829.0,Full HD,1920,1080,No,No,No,Intel,1.6,Core i5 8250U,256,0,SSD,No,Intel,UHD Graphics 620 +Lenovo,Ideapad 320-15ISK,Notebook,15.6,4,Windows 10,2.2,579.0,Full HD,1920,1080,No,No,No,Intel,2.0,Core i3 6006U,1024,0,HDD,No,Nvidia,GeForce 920MX +Asus,X541NA-GO414T (N3350/8GB/1TB/W10),Notebook,15.6,8,Windows 10,2.0,399.0,Standard,1366,768,No,No,No,Intel,1.1,Celeron Dual Core N3350,1024,0,HDD,No,Intel,HD Graphics 500 +Asus,VivoBook Pro,Notebook,15.6,8,Windows 10,1.99,906.62,Full HD,1920,1080,No,No,No,Intel,2.5,Core i5 7300HQ,1024,0,HDD,No,Nvidia,GeForce GTX 1050 +Dell,XPS 13,Ultrabook,13.3,8,Windows 10,1.23,1869.0,Quad HD+,3200,1800,Yes,No,No,Intel,1.6,Core i5 8250U,256,0,SSD,No,Intel,UHD Graphics 620 +Lenovo,IdeaPad 100S-14IBR,Notebook,14.0,2,Windows 10,1.42,249.0,Standard,1366,768,No,No,No,Intel,1.6,Celeron Dual Core N3060,32,0,Flash Storage,No,Intel,HD Graphics 400 +Lenovo,Thinkpad Yoga,2 in 1 Convertible,13.3,8,Windows 10,1.37,1757.42,Full HD,1920,1080,Yes,Yes,No,Intel,2.7,Core i7 7500U,256,0,SSD,No,Intel,HD Graphics 620 +Dell,XPS 15,Notebook,15.6,16,Windows 10,2.06,2399.0,4K Ultra HD,3840,2160,Yes,No,No,Intel,2.8,Core i7 7700HQ,1024,0,SSD,No,Nvidia,GeForce GTX 1050 +Lenovo,Legion Y520-15IKBN,Gaming,15.6,8,Windows 10,2.5,1109.0,Full HD,1920,1080,No,Yes,No,Intel,2.8,Core i7 7700HQ,128,1024,SSD,HDD,Nvidia,GeForce GTX 1050M +HP,17-AK091ND (A9-9420/8GB/1TB/W10),Notebook,17.0,8,Windows 10,2.6,520.9,Standard,1600,900,No,No,No,AMD,3.0,A9-Series 9420,1024,0,HDD,No,AMD,Radeon R5 +Lenovo,ThinkPad X1,Ultrabook,14.0,16,Windows 10,1.14,2450.0,Full HD,1920,1080,No,Yes,No,Intel,2.7,Core i7 7500U,512,0,SSD,No,Intel,HD Graphics 620 +Asus,ROG GL553VE-FY022,Gaming,15.6,8,No OS,2.5,1169.0,Full HD,1920,1080,No,Yes,No,Intel,2.8,Core i7 7700HQ,1024,0,HDD,No,Nvidia,GeForce GTX 1050 Ti +Acer,Extensa EX2540,Notebook,15.6,4,Windows 10,2.4,450.0,Standard,1366,768,No,No,No,Intel,2.0,Core i3 6006U,500,0,HDD,No,Intel,HD Graphics 520 +Lenovo,IdeaPad 100S-14IBR,Notebook,14.0,4,Windows 10,1.43,274.0,Standard,1366,768,No,No,No,Intel,1.6,Celeron Dual Core N3060,32,0,Flash Storage,No,Intel,HD Graphics +Acer,Swift 3,Ultrabook,14.0,8,Windows 10,1.8,919.0,Full HD,1920,1080,No,Yes,No,Intel,2.5,Core i5 7200U,256,0,SSD,No,Intel,Graphics 620 +Razer,Blade Pro,Gaming,14.0,16,Windows 10,1.95,2599.0,Full HD,1920,1080,No,No,No,Intel,2.8,Core i7 7700HQ,256,0,SSD,No,Nvidia,GeForce GTX 1060 +Toshiba,Portege Z30-C-16J,Notebook,13.3,8,Windows 10,1.2,1213.0,Full HD,1920,1080,No,No,No,Intel,2.3,Core i5 6200U,256,0,SSD,No,Intel,HD Graphics 520 +Lenovo,Thinkpad X270,Ultrabook,12.5,8,Windows 10,1.36,1584.0,Full HD,1920,1080,No,Yes,No,Intel,2.7,Core i7 7500U,256,0,SSD,No,Intel,HD Graphics 620 +Asus,ROG G701VI,Gaming,17.3,32,Windows 10,3.8,2799.0,Full HD,1920,1080,No,Yes,No,Intel,2.7,Core i7 6820HK,512,0,SSD,No,Nvidia,GeForce GTX 1080 +Acer,A715-71G-59DH (i5-7300HQ/8GB/1TB/GeForce,Gaming,15.6,8,Linux,2.4,709.0,Full HD,1920,1080,No,No,No,Intel,2.5,Core i5 7300HQ,1024,0,HDD,No,Nvidia,GeForce GTX 1050 +Dell,XPS 13,Ultrabook,13.3,8,Windows 10,1.2,1449.9,Full HD,1920,1080,No,No,No,Intel,1.6,Core i5 8250U,256,0,SSD,No,Intel,UHD Graphics 620 +MSI,GL62M 7REX,Gaming,15.6,8,Windows 10,2.2,1191.8,Full HD,1920,1080,No,No,No,Intel,2.8,Core i7 7700HQ,128,1024,SSD,HDD,Nvidia,GeForce GTX 1050 Ti +HP,250 G6,Notebook,15.6,4,No OS,1.86,364.9,Standard,1366,768,No,No,No,Intel,2.0,Core i3 6006U,500,0,HDD,No,Intel,HD Graphics 520 +Toshiba,Tecra A50-D-11M,Notebook,15.6,8,Windows 10,2.0,1064.0,Full HD,1920,1080,No,Yes,No,Intel,2.5,Core i5 7200U,500,0,HDD,No,Intel,HD Graphics 620 +Dell,Inspiron 5570,Notebook,15.6,8,Windows 10,2.2,919.0,Full HD,1920,1080,No,No,No,Intel,1.8,Core i7 8550U,256,0,SSD,No,AMD,Radeon 530 +Dell,Inspiron 5570,Notebook,15.6,16,Windows 10,2.2,1135.0,Full HD,1920,1080,No,No,No,Intel,1.8,Core i7 8550U,256,2048,SSD,HDD,AMD,Radeon 530 +Lenovo,IdeaPad Y700-15ISK,Gaming,15.6,8,Windows 10,3.31,1196.0,Full HD,1920,1080,No,Yes,No,Intel,2.6,Core i7 6700HQ,128,1024,SSD,HDD,Nvidia,GeForce GTX 960 +Dell,Alienware 17,Gaming,17.3,32,Windows 10,4.42,3147.37,4K Ultra HD,3840,2160,No,Yes,No,Intel,2.8,Core i7 7700HQ,512,1024,SSD,HDD,Nvidia,GeForce GTX 1070 +Dell,Latitude E7470,Notebook,14.0,8,Windows 10,1.56,1229.0,Full HD,1920,1080,No,No,No,Intel,2.4,Core i5 6300U,256,0,SSD,No,Intel,HD Graphics 520 +Lenovo,Ideapad 320-15IAP,Notebook,15.6,4,Windows 10,2.2,419.0,Standard,1366,768,No,No,No,Intel,1.1,Celeron Dual Core N3350,500,0,HDD,No,Intel,HD Graphics 500 +Lenovo,IdeaPad 320-15ISK,Notebook,15.6,4,Windows 10,2.2,535.0,Full HD,1920,1080,No,No,No,Intel,2.3,Core i5 6200U,500,0,HDD,No,Intel,HD Graphics 520 +HP,15-ay047nv (i3-6006U/6GB/1TB/Radeon,Notebook,15.6,6,Windows 10,2.04,539.0,Standard,1920,1080,No,No,No,Intel,2.0,Core i3 6006U,1024,0,HDD,No,AMD,Radeon R5 M430 +MSI,GP72VR Leopard,Gaming,17.3,8,Windows 10,2.7,1486.77,Full HD,1920,1080,No,No,No,Intel,2.8,Core i7 7700HQ,128,1024,SSD,HDD,Nvidia,GeForce GTX 1060 +Toshiba,Satellite Pro,Notebook,15.6,4,Windows 10,2.1,498.0,Standard,1366,768,No,No,No,Intel,2.1,Core i3 6100U,128,0,SSD,No,Intel,HD Graphics 520 +Dell,Latitude 3580,Notebook,15.6,8,Windows 10,2.06,955.0,Full HD,1920,1080,No,No,No,Intel,2.5,Core i5 7200U,1024,0,HDD,No,Intel,HD Graphics 620 +HP,15-bs012nv (i7-7500U/8GB/1TB/Radeon,Notebook,15.6,8,Windows 10,2.1,745.0,Full HD,1920,1080,No,No,No,Intel,2.7,Core i7 7500U,1024,0,HDD,No,AMD,Radeon 530 +Toshiba,Tecra Z50-D-10E,Notebook,15.6,8,Windows 10,2.0,1258.0,Full HD,1920,1080,No,Yes,No,Intel,2.5,Core i5 7200U,256,0,SSD,No,Intel,HD Graphics 620 +Acer,Aspire 3,Notebook,15.6,4,Linux,2.1,412.0,Standard,1366,768,No,No,No,Intel,2.0,Core i3 6006U,128,0,SSD,No,Intel,HD Graphics 520 +Microsoft,Surface Laptop,Ultrabook,13.5,8,Windows 10 S,1.252,1867.85,Standard,2256,1504,Yes,No,No,Intel,2.8,Core i7 7600U,256,0,SSD,No,Intel,Iris Plus Graphics 640 +Lenovo,V310-15ISK (i5-7200U/8GB/1TB,Notebook,15.6,8,Windows 10,1.9,817.95,Full HD,1920,1080,No,No,No,Intel,2.5,Core i5 7200U,128,1024,SSD,HDD,AMD,Radeon R5 M430 +Lenovo,Yoga 720-13IKB,2 in 1 Convertible,13.3,8,Windows 10,1.3,1034.0,Full HD,1920,1080,Yes,Yes,No,Intel,2.5,Core i5 7200U,256,0,SSD,No,Intel,HD Graphics 620 +Lenovo,IdeaPad 320-15AST,Notebook,15.6,4,Windows 10,2.2,349.0,Standard,1366,768,No,No,No,AMD,2.2,E-Series E2-9000,128,0,SSD,No,AMD,Radeon R2 Graphics +HP,Pavilion X360,2 in 1 Convertible,14.0,4,Windows 10,1.63,699.0,Full HD,1920,1080,Yes,Yes,No,Intel,2.4,Core i3 7100U,128,0,SSD,No,Nvidia,GeForce 940MX +MSI,GP62 7RDX,Gaming,15.6,16,Windows 10,2.4,1294.0,Full HD,1920,1080,No,No,No,Intel,2.8,Core i7 7700HQ,256,1024,SSD,HDD,Nvidia,GeForce GTX 1050 +Asus,Zenbook 3,Ultrabook,14.0,8,Windows 10,1.1,1135.0,Full HD,1920,1080,No,No,No,Intel,2.5,Core i5 7200U,256,0,SSD,No,Intel,HD Graphics 620 +HP,Chromebook X360,2 in 1 Convertible,11.6,8,Chrome OS,1.4,495.0,Standard,1366,768,Yes,No,No,Intel,1.1,Celeron Dual Core N3350,64,0,Flash Storage,No,Intel,HD Graphics 500 +LG,Gram 15Z975,Ultrabook,15.6,8,Windows 10,1.09,2299.0,Full HD,1920,1080,No,Yes,No,Intel,1.8,Core i7 8550U,512,0,SSD,No,Intel,HD Graphics 620 +Acer,Aspire VX5-591G,Gaming,15.6,16,Windows 10,2.5,1299.0,Full HD,1920,1080,No,No,No,Intel,2.5,Core i5 7300HQ,256,0,SSD,No,Nvidia,GeForce GTX 1050 Ti +MSI,GV62M 7RD,Gaming,15.6,8,Windows 10,2.2,997.9,Full HD,1920,1080,No,No,No,Intel,2.5,Core i5 7300HQ,256,0,SSD,No,Nvidia,GeForce GTX 1050 +Asus,L502NA-GO052T (N3350/4GB/128GB/W10),Notebook,15.6,4,Windows 10,1.86,419.0,Standard,1366,768,No,No,No,Intel,1.1,Celeron Dual Core N3350,128,0,SSD,No,Intel,HD Graphics 500 +Dell,Alienware 15,Gaming,15.6,16,Windows 10,3.21,2051.0,Full HD,1920,1080,No,No,No,Intel,2.5,Core i5 7300HQ,128,1024,SSD,HDD,Nvidia,GeForce GTX 1060 +HP,17-bs000nv I3,Notebook,17.3,4,Windows 10,2.5,699.0,Full HD,1920,1080,No,Yes,No,Intel,2.0,Core i3 6006U,256,0,SSD,No,AMD,Radeon R5 520 +Lenovo,Yoga 730,2 in 1 Convertible,13.3,8,Windows 10,1.19,1499.0,Full HD,1920,1080,Yes,Yes,No,Intel,1.8,Core i7 8550U,512,0,SSD,No,Intel,UHD Graphics 620 +Dell,Alienware 15,Gaming,15.6,16,Windows 10,3.49,2813.75,Full HD,1920,1080,No,No,No,Intel,2.9,Core i7 7820HK,256,1024,SSD,HDD,Nvidia,GeForce GTX 1070 +HP,250 G6,Notebook,15.6,4,Windows 10,1.86,612.61,Standard,1366,768,No,No,No,Intel,2.5,Core i5 7200U,500,0,HDD,No,AMD,Radeon 520 +Dell,Inspiron 3567,Notebook,15.6,4,Windows 10,2.2,545.67,Standard,1366,768,No,No,No,Intel,2.0,Core i3 6006U,1024,0,HDD,No,AMD,Radeon R5 M430 +HP,17-Y002nv (A10-9600P/6GB/2TB/Radeon,Notebook,17.3,6,Windows 10,2.65,569.0,Full HD,1920,1080,No,Yes,No,AMD,2.4,A10-Series 9600P,2048,0,HDD,No,AMD,Radeon R7 M440 +Lenovo,V110-15ISK (3855U/4GB/500GB/W10),Notebook,15.6,4,Windows 10,2.1,318.0,Standard,1366,768,No,No,No,Intel,1.6,Celeron Dual Core 3855U,500,0,HDD,No,Intel,HD Graphics 510 +Acer,Chromebook 14,Notebook,14.0,4,Chrome OS,1.45,375.0,Standard,1366,768,No,No,No,Intel,1.6,Celeron Dual Core 3855U,32,0,Flash Storage,No,Intel,HD Graphics 510 +Lenovo,IdeaPad 520s-14IKB,Notebook,14.0,4,Windows 10,1.7,699.0,Full HD,1920,1080,No,No,No,Intel,2.5,Core i5 7200U,256,0,SSD,No,Intel,HD Graphics 620 +HP,ZBook 17,Workstation,17.3,8,Windows 10,3.14,1907.99,Full HD,1920,1080,No,No,No,Intel,2.8,Core i7 7700HQ,500,0,HDD,No,Nvidia,Quadro M1200 +Lenovo,ThinkPad X1,2 in 1 Convertible,14.0,8,Windows 10,1.42,2590.0,Standard,2560,1440,Yes,No,No,Intel,2.7,Core i7 7500U,256,0,SSD,No,Intel,HD Graphics 620 +Toshiba,Satellite Pro,Notebook,13.3,8,Windows 10,1.5,973.0,Full HD,1920,1080,No,Yes,No,Intel,2.5,Core i5 7200U,256,0,SSD,No,Intel,HD Graphics 620 +Acer,TravelMate B117-M,Netbook,11.6,4,Windows 10,1.4,269.0,Standard,1366,768,No,No,No,Intel,1.6,Celeron Dual Core N3050,32,0,Flash Storage,No,Intel,HD Graphics +Lenovo,Yoga 910-13IKB,2 in 1 Convertible,14.0,16,Windows 10,1.38,1749.0,Full HD,1920,1080,Yes,No,No,Intel,2.7,Core i7 7500U,512,0,SSD,No,Intel,HD Graphics 620 +Asus,Chromebook Flip,2 in 1 Convertible,12.5,4,Chrome OS,1.2,669.0,Full HD,1920,1080,Yes,No,No,Intel,0.9,Core M M3-6Y30,64,0,Flash Storage,No,Intel,HD Graphics 515 +Toshiba,Portege Z30T-C-133,Ultrabook,13.3,16,Windows 10,1.36,1877.0,Full HD,1920,1080,Yes,No,No,Intel,2.5,Core i7 6500U,512,0,SSD,No,Intel,HD Graphics 520 +HP,15-bs011nv (i7-7500U/4GB/500GB/Radeon,Notebook,15.6,4,Windows 10,2.1,689.0,Full HD,1920,1080,No,Yes,No,Intel,2.7,Core i7 7500U,500,0,HDD,No,AMD,Radeon 530 +Dell,Inspiron 5577,Gaming,15.6,8,Windows 10,2.56,819.0,Full HD,1920,1080,No,No,No,Intel,2.5,Core i5 7300HQ,1024,0,HDD,No,Nvidia,GeForce GTX 1050 +Lenovo,IdeaPad 320-15AST,Notebook,15.6,4,Windows 10,2.2,399.0,Full HD,1920,1080,No,No,No,AMD,2.9,A9-Series 9420,256,0,SSD,No,AMD,Radeon 530 +Lenovo,IdeaPad 320-15ABR,Notebook,15.6,8,Windows 10,2.2,429.0,Standard,1366,768,No,No,No,AMD,3.6,A12-Series 9720P,1024,0,HDD,No,AMD,Radeon R7 +Lenovo,V310-15IKB (i5-7200U/4GB/1TB/FHD/W10),Notebook,15.6,4,Windows 10,2.1,621.45,Full HD,1920,1080,No,No,No,Intel,2.5,Core i5 7200U,1024,1024,HDD,HDD,Intel,HD Graphics 620 +Lenovo,V310-15ISK (i3-6006U/4GB/500GB/No,Notebook,15.6,4,No OS,1.9,450.0,Standard,1366,768,No,No,No,Intel,2.0,Core i3 6006U,500,0,HDD,No,Intel,HD Graphics 520 +Dell,Vostro 5568,Notebook,15.6,8,Windows 10,2.18,795.0,Full HD,1920,1080,No,No,No,Intel,2.5,Core i5 7200U,256,0,SSD,No,Intel,HD Graphics 620 +Acer,Spin 5,2 in 1 Convertible,13.3,8,Windows 10,1.6,999.0,Full HD,1920,1080,Yes,Yes,No,Intel,1.6,Core i5 8250U,256,0,SSD,No,Intel,UHD Graphics 620 +Lenovo,ThinkPad P51s,Workstation,15.6,16,Windows 7,2.18,1855.0,Full HD,1920,1080,No,No,No,Intel,2.5,Core i7 6500U,512,0,SSD,No,Nvidia,Quadro M520M +Lenovo,Thinkpad T460p,Notebook,14.0,8,Windows 10,1.8,1191.0,Full HD,1920,1080,No,No,No,Intel,2.3,Core i5 6300HQ,256,0,SSD,No,Intel,HD Graphics 520 +HP,17-ak002nv (A10-9620P/6GB/2TB/Radeon,Notebook,17.3,6,Windows 10,2.71,655.01,Full HD,1920,1080,No,Yes,No,AMD,2.5,A10-Series 9620P,2048,0,HDD,No,AMD,Radeon 530 +Lenovo,Legion Y520-15IKBN,Gaming,15.6,8,Windows 10,2.5,1249.0,Full HD,1920,1080,No,Yes,No,Intel,2.8,Core i7 7700HQ,128,1024,SSD,HDD,Nvidia,GeForce GTX 1050 Ti +Dell,Latitude 5480,Notebook,14.0,8,Linux,1.64,1089.0,Full HD,1920,1080,No,No,No,Intel,2.8,Core i5 7440HQ,256,0,SSD,No,Nvidia,GeForce 930MX +Dell,Vostro 5568,Notebook,15.6,8,Linux,1.98,726.0,Full HD,1920,1080,No,No,No,Intel,2.5,Core i5 7200U,1024,0,HDD,No,Intel,HD Graphics 620 +Asus,VivoBook E403NA,Notebook,14.0,4,Windows 10,1.5,298.0,Full HD,1920,1080,No,No,No,Intel,1.1,Celeron Dual Core N3350,32,0,Flash Storage,No,Intel,HD Graphics 500 +Dell,Latitude 5580,Notebook,15.6,16,Windows 10,1.93,1426.66,Full HD,1920,1080,No,No,No,Intel,2.6,Core i5 7300U,512,0,SSD,No,Intel,HD Graphics 620 +Lenovo,Thinkpad E470,Notebook,14.0,8,Windows 10,1.87,857.07,Full HD,1920,1080,No,Yes,No,Intel,2.5,Core i5 7200U,256,0,SSD,No,Nvidia,GeForce 920MX +Dell,Latitude 5580,Notebook,15.6,8,Windows 10,1.9,1179.0,Full HD,1920,1080,No,No,No,Intel,2.6,Core i5 7300U,256,0,SSD,No,Intel,HD Graphics 620 +Lenovo,110-15ACL (A6-7310/4GB/500GB/W10),Notebook,15.6,4,Windows 10,2.19,298.0,Standard,1366,768,No,No,No,AMD,2.0,A6-Series 7310,500,0,HDD,No,AMD,Radeon R4 +Mediacom,Smartbook 142,Notebook,14.0,4,Windows 10,1.4,265.0,Full HD,1920,1200,No,Yes,No,Intel,1.92,Atom Z8350,32,0,HDD,No,Intel,HD Graphics 400 +HP,ProBook 470,Notebook,17.3,8,Windows 10,2.63,1200.0,Full HD,1920,1080,No,No,No,Intel,2.7,Core i7 7500U,256,0,SSD,No,Nvidia,GeForce 930MX +Lenovo,ThinkPad X1,Ultrabook,14.0,8,Windows 10,1.17,1686.64,Quad HD+,2560,1440,No,Yes,No,Intel,2.5,Core i7 6500U,512,0,SSD,No,Intel,HD Graphics 520 +HP,Pavilion X360,2 in 1 Convertible,13.3,8,Windows 10,1.58,836.6,Standard,1366,768,Yes,Yes,No,Intel,2.5,Core i5 7200U,256,0,SSD,No,Intel,HD Graphics 620 +Lenovo,ThinkPad T470s,Ultrabook,14.0,8,Windows 10,1.32,1499.0,Full HD,1920,1080,No,Yes,No,Intel,2.5,Core i5 7200U,256,0,SSD,No,Intel,HD Graphics 620 +Dell,Alienware 17,Gaming,17.3,32,Windows 10,4.36,3659.4,4K Ultra HD,3840,2160,No,No,No,Intel,2.8,Core i7 7700HQ,1024,1024,SSD,HDD,Nvidia,GeForce GTX 1070 +MSI,GL72M 7REX,Gaming,17.3,8,Windows 10,2.7,1348.48,Full HD,1920,1080,No,No,No,Intel,2.8,Core i7 7700HQ,128,1024,SSD,HDD,Nvidia,GeForce GTX 1050 Ti +Lenovo,V310-15IKB (i5-7200U/4GB/1TB/No,Notebook,15.6,4,No OS,1.9,489.9,Standard,1366,768,No,No,No,Intel,2.5,Core i5 7200U,1024,0,HDD,No,Intel,HD Graphics 620 +Dell,Inspiron 5570,Notebook,15.6,8,Windows 10,2.2,719.0,Full HD,1920,1080,No,No,No,Intel,1.6,Core i5 8250U,128,1024,SSD,HDD,AMD,Radeon 530 +Dell,Inspiron 5378,2 in 1 Convertible,13.3,4,Windows 10,1.71,649.0,Full HD,1920,1080,Yes,No,No,Intel,2.4,Core i3 7100U,1024,0,HDD,No,Intel,HD Graphics 620 +Dell,Inspiron 5567,Notebook,15.6,8,Linux,2.32,589.52,Standard,1366,768,No,No,No,Intel,2.5,Core i5 7200U,1024,0,HDD,No,AMD,Radeon R7 M445 +HP,15-BW037na (A9-9420/4GB/1TB/Radeon,Notebook,15.6,4,Windows 10,2.1,489.0,Full HD,1920,1080,No,No,No,AMD,3.0,A9-Series 9420,1024,0,HDD,No,AMD,Radeon 520 +Acer,Predator 17,Gaming,17.3,16,Windows 10,4.2,1935.0,Full HD,1920,1080,No,Yes,No,Intel,2.6,Core i7 6700HQ,128,1024,SSD,HDD,Nvidia,GeForce GTX 1060 +Dell,Inspiron 3567,Notebook,15.6,12,Windows 10,2.25,649.0,Standard,1366,768,No,No,No,Intel,2.5,Core i5 7200U,1024,0,HDD,No,Intel,HD Graphics 620 +HP,15-BW091ND (A9-9420/6GB/1TB,Notebook,15.6,6,Windows 10,2.1,650.0,Full HD,1920,1080,No,No,No,AMD,3.0,A9-Series A9-9420,128,1024,SSD,HDD,AMD,Radeon 520 +Acer,Extensa EX2540-58KR,Notebook,15.6,4,Windows 10,2.4,559.0,Standard,1366,768,No,No,No,Intel,2.5,Core i5 7200U,500,0,HDD,No,Intel,HD Graphics 620 +Lenovo,ThinkPad 13,Notebook,13.3,8,Windows 10,1.44,960.0,Full HD,1920,1080,No,Yes,No,Intel,2.5,Core i5 7200U,256,0,SSD,No,Intel,HD Graphics 620 +Lenovo,V310-15IKB (i7-7500U/4GB/1TB/FHD/W10),Notebook,15.6,4,Windows 10,1.85,779.0,Full HD,1920,1080,No,No,No,Intel,2.7,Core i7 7500U,1024,0,HDD,No,Intel,HD Graphics 620 +HP,ZBook 15,Workstation,15.6,16,Windows 10,2.6,2419.0,Full HD,1920,1080,No,No,No,Intel,2.8,Core i7 7700HQ,256,0,SSD,No,Nvidia,Quadro M2200 +Dell,Inspiron 5379,2 in 1 Convertible,13.3,8,Windows 10,1.55,659.0,Full HD,1920,1080,Yes,No,No,Intel,1.6,Core i5 8250U,1024,0,HDD,No,Intel,UHD Graphics 620 +MSI,GS63VR 7RF,Gaming,15.6,16,Windows 10,1.8,2094.48,Full HD,1920,1080,No,No,No,Intel,2.8,Core i7 7700HQ,256,1024,SSD,HDD,Nvidia,GeForce GTX 1060 +Acer,Aspire ES1-572,Notebook,15.6,4,Windows 10,2.4,410.8,Standard,1366,768,No,No,No,Intel,2.0,Core i3 6006U,500,0,HDD,No,Intel,HD Graphics 520 +Dell,Inspiron 7560,Notebook,15.6,8,Windows 10,2.0,1207.0,Full HD,1920,1080,No,No,No,Intel,2.7,Core i7 7500U,128,1024,SSD,HDD,Nvidia,GeForce 940MX +Dell,Vostro 3568,Notebook,15.6,8,Windows 10,2.0,665.0,Standard,1366,768,No,No,No,Intel,2.0,Core i3 6006U,256,0,SSD,No,Intel,HD Graphics 520 +Toshiba,Tecra X40-D-10G,Notebook,14.0,8,Windows 10,1.25,1535.0,Full HD,1920,1080,Yes,Yes,No,Intel,2.5,Core i5 7200U,256,0,SSD,No,Intel,HD Graphics 620 +Lenovo,Flex 5,2 in 1 Convertible,14.0,8,Windows 10,1.7,999.0,Full HD,1920,1080,Yes,No,No,Intel,2.5,Core i5 7200U,256,0,SSD,No,Intel,HD Graphics 620 +Lenovo,Thinkpad P51s,Workstation,15.6,16,Windows 10,2.5,3299.0,4K Ultra HD,3840,2160,No,Yes,No,Intel,2.8,Core i7 7600U,1024,0,SSD,No,Nvidia,Quadro M520M +Acer,Chromebook 14,Notebook,14.0,2,Chrome OS,1.68,330.0,Standard,1366,768,No,No,No,Intel,1.6,Celeron Dual Core N3060,32,0,Flash Storage,No,Intel,HD Graphics 400 +Samsung,Notebook 9,Ultrabook,13.3,16,Windows 10,0.81,1649.0,Full HD,1920,1080,No,No,No,Intel,2.7,Core i7 7500U,256,0,SSD,No,Intel,HD Graphics 620 +HP,250 G6,Notebook,15.6,8,Windows 10,1.86,539.0,Full HD,1920,1080,No,No,No,Intel,2.0,Core i3 6006U,256,0,SSD,No,Intel,HD Graphics 520 +Dell,Latitude 5480,Notebook,14.0,8,Windows 10,1.6,1126.71,Standard,1366,768,No,No,No,Intel,2.5,Core i5 7200U,256,0,SSD,No,Intel,HD Graphics 620 +HP,Zbook 17,Workstation,17.3,16,Windows 7,3.0,4389.0,Full HD,1920,1080,No,Yes,No,Intel,2.9,Xeon E3-1535M v5,256,0,SSD,No,Nvidia,Quadro M2000M +Lenovo,N23 (N3060/4GB/128GB/W10),Netbook,11.6,4,Windows 10,1.4,475.0,Standard,1366,768,Yes,No,No,Intel,1.6,Celeron Dual Core N3060,128,0,SSD,No,Intel,HD Graphics 400 +HP,EliteBook 850,Notebook,15.6,8,Windows 10,1.84,1900.0,Full HD,1920,1080,No,No,No,Intel,2.4,Core i5 6300U,256,0,SSD,No,Intel,HD Graphics 520 +Asus,X550VX-XX015D (i5-6300HQ/4GB/1TB/GeForce,Notebook,15.6,4,No OS,2.45,579.0,Standard,1366,768,No,No,No,Intel,2.3,Core i5 6300HQ,1024,0,HDD,No,Nvidia,GeForce GTX 950M +Lenovo,Thinkpad T460,Ultrabook,14.0,4,Windows 10,1.7,1096.0,Full HD,1920,1080,No,No,No,Intel,2.3,Core i5 6200U,180,0,SSD,No,Intel,HD Graphics 520 +Asus,Pro P2540UA-XO0192R,Notebook,15.6,4,Windows 10,2.37,849.9,Standard,1366,768,No,No,No,Intel,2.7,Core i7 7500U,256,0,SSD,No,Intel,HD Graphics 620 +Lenovo,Yoga 900-13ISK,2 in 1 Convertible,13.3,8,Windows 10,1.3,1199.0,Quad HD+,3200,1800,Yes,Yes,No,Intel,1.8,Core i5 6260U,256,0,SSD,No,Intel,HD Graphics 540 +HP,15-cb003na (i5-7300HQ/8GB/1TB,Notebook,15.6,8,Windows 10,2.2,1099.0,Full HD,1920,1080,No,Yes,No,Intel,2.5,Core i5 7300HQ,128,1024,SSD,HDD,Nvidia,GeForce GTX 1050 +HP,ZBook 15,Workstation,15.6,8,Windows 7,2.59,1561.0,Full HD,1920,1080,No,No,No,Intel,2.6,Core i7 6700HQ,256,0,SSD,No,Nvidia,Quadro M1000M +Dell,Alienware 17,Gaming,15.6,16,Windows 10,4.42,2868.99,4K Ultra HD,3840,2160,No,Yes,No,Intel,2.8,Core i7 7700HQ,256,1024,SSD,HDD,Nvidia,GeForce GTX 1070 +Acer,Aspire 3,Notebook,15.6,4,Windows 10,2.1,599.0,Standard,1366,768,No,No,No,Intel,2.5,Core i5 7200U,256,0,SSD,No,Intel,HD Graphics 620 +Lenovo,Legion Y520-15IKBN,Gaming,15.6,8,Windows 10,2.5,1048.0,Full HD,1920,1080,No,Yes,No,Intel,2.8,Core i7 7700HQ,128,1024,SSD,HDD,Nvidia,GeForce GTX 1050 +Dell,Latitude 7280,Ultrabook,12.5,16,Windows 10,1.18,1859.0,Full HD,1920,1080,No,No,No,Intel,2.8,Core i7 7600U,256,0,SSD,No,Intel,HD Graphics 620 +Google,Pixelbook (Core,Ultrabook,12.3,8,Chrome OS,1.1,1559.0,Standard,2400,1600,Yes,No,No,Intel,1.2,Core i5 7Y57,256,0,SSD,No,Intel,HD Graphics 615 +Asus,Zenbook UX330UA-AH5Q,Ultrabook,13.3,8,Windows 10,1.2,1129.0,Quad HD+,3200,1800,No,Yes,No,Intel,2.5,Core i5 7200U,256,0,SSD,No,Intel,HD Graphics 620 +Dell,Latitude 3380,Notebook,13.3,4,Windows 10,1.65,849.0,Standard,1366,768,No,No,No,Intel,2.0,Core i3 6006U,500,0,HDD,No,Intel,HD Graphics 520 +Acer,TravelMate P238-M,Notebook,13.3,4,Windows 10,1.6,655.0,Standard,1366,768,No,No,No,Intel,2.3,Core i5 6200U,128,0,SSD,No,Intel,HD Graphics 520 +Asus,X751NV-TY001 (N4200/4GB/1TB/GeForce,Notebook,17.3,4,Windows 10,2.8,470.34,Standard,1366,768,No,No,No,Intel,1.1,Pentium Quad Core N4200,1024,0,HDD,No,Nvidia,GeForce 920MX +Dell,Inspiron 7559,Gaming,15.6,16,Windows 10,2.72,1099.0,4K Ultra HD,3840,2160,Yes,Yes,No,Intel,2.6,Core i7 6700HQ,128,1024,SSD,HDD,Nvidia,GeForce GTX 960M +Samsung,Notebook 9,Ultrabook,13.3,8,Windows 10,1.31,1599.0,Full HD,1920,1080,Yes,No,No,Intel,2.7,Core i7 7500U,256,0,SSD,No,Intel,HD Graphics 620 +Acer,Aspire A315-31,Notebook,15.6,4,Linux,2.1,298.0,Standard,1366,768,No,No,No,Intel,1.1,Pentium Quad Core N4200,1024,0,HDD,No,Intel,HD Graphics 505 +Dell,Inspiron 5567,Notebook,15.6,16,Windows 10,2.3,1181.27,Full HD,1920,1080,No,No,No,Intel,2.7,Core i7 7500U,256,0,SSD,No,AMD,Radeon R7 M445 +Samsung,Notebook 9,2 in 1 Convertible,15.0,16,Windows 10,1.71,1799.0,Full HD,1920,1080,Yes,No,No,Intel,2.7,Core i7 7500U,256,0,SSD,No,AMD,Radeon 540 +Toshiba,Tecra A40-C-1E5,Notebook,14.0,4,Windows 10,1.75,1020.0,Standard,1366,768,No,Yes,No,Intel,2.3,Core i5 6200U,128,0,SSD,No,Intel,HD Graphics 520 +Dell,Inspiron 7567,Gaming,15.6,8,Windows 10,2.62,1099.0,Full HD,1920,1080,No,No,No,Intel,2.8,Core i7 7700HQ,1024,0,HDD,No,Nvidia,GeForce GTX 1050 +HP,EliteBook 820,Ultrabook,12.5,4,Windows 10,1.26,1244.0,Standard,1366,768,No,No,No,Intel,2.3,Core i5 6200U,256,0,SSD,No,Intel,HD Graphics 520 +Asus,Q524UQ-BHI7T15 (i7-7500U/12GB/2TB/GeForce,2 in 1 Convertible,15.6,12,Windows 10,2.3,839.0,Full HD,1920,1080,Yes,No,No,Intel,2.7,Core i7 7500U,2048,0,HDD,No,Nvidia,GeForce 940MX +Lenovo,Thinkpad P50,Notebook,15.6,16,Windows 7,2.5,2370.0,4K Ultra HD,3840,2160,No,No,No,Intel,2.7,Core i7 6820HQ,512,0,SSD,No,Nvidia,Quadro M2000M +Acer,Swift 3,Notebook,14.0,4,Windows 10,1.8,636.0,Full HD,1920,1080,No,Yes,No,Intel,2.4,Core i3 7100U,128,0,SSD,No,Intel,HD Graphics 620 +Razer,Blade Pro,Gaming,14.0,16,Windows 10,1.95,2899.0,Full HD,1920,1080,No,No,No,Intel,2.8,Core i7 7700HQ,512,0,SSD,No,Nvidia,GeForce GTX 1060 +Asus,Vivobook Max,Notebook,15.6,8,Windows 10,2.0,581.9,Standard,1920,1080,No,No,No,Intel,1.1,Pentium Dual Core N4200,128,0,SSD,No,Intel,HD Graphics 505 +Dell,Alienware 17,Gaming,17.3,32,Windows 10,4.42,3588.8,Full HD,1920,1080,No,Yes,No,Intel,2.8,Core i7 7700HQ,1024,1024,SSD,HDD,Nvidia,GeForce GTX 1070M +Asus,Rog G752VS-BA171T,Gaming,17.3,16,Windows 10,4.3,2350.0,Full HD,1920,1080,No,Yes,No,Intel,2.6,Core i7 6700HQ,256,1024,SSD,HDD,Nvidia,GeForce GTX 1070 +Toshiba,Tecra Z40-C-161,Ultrabook,14.0,16,Windows 10,1.47,1764.0,Full HD,1920,1080,No,Yes,No,Intel,2.6,Core i7 6600U,512,0,SSD,No,Nvidia,GeForce 930M +Lenovo,IdeaPad 110-15IBR,Notebook,15.6,8,No OS,2.2,329.0,Standard,1366,768,No,No,No,Intel,1.6,Celeron Quad Core N3710,1024,0,HDD,No,Intel,HD Graphics 405 +Lenovo,ThinkPad T470s,Ultrabook,14.0,16,Windows 10,1.7,2299.0,Full HD,1920,1080,No,No,No,Intel,2.7,Core i7 7500U,512,0,SSD,No,Intel,HD Graphics 620 +MSI,GS43VR 7RE,Gaming,14.0,16,Windows 10,1.6,1891.0,Full HD,1920,1080,No,Yes,No,Intel,2.8,Core i7 7700HQ,256,1024,SSD,HDD,Nvidia,GeForce GTX 1060 +MSI,GL62M (i5-7300HQ/8GB/1TB,Gaming,15.6,8,Windows 10,2.2,1089.0,Full HD,1920,1080,No,No,No,Intel,2.5,Core i5 7300HQ,128,1024,SSD,HDD,Nvidia,GeForce GTX 1050 +Lenovo,Legion Y520-15IKBN,Gaming,15.6,4,Windows 10,2.4,999.0,Full HD,1920,1080,No,Yes,No,Intel,2.8,Core i7 7700HQ,1024,0,HDD,No,Nvidia,GeForce GTX 1050 +Acer,Predator G9-793,Gaming,17.3,16,Windows 10,4.2,2299.0,Full HD,1920,1080,No,Yes,No,Intel,2.8,Core i7 7700HQ,256,1024,SSD,HDD,Nvidia,GeForce GTX 1060 +Dell,Inspiron 7567,Gaming,15.6,8,Windows 10,2.62,985.0,Full HD,1920,1080,No,No,No,Intel,2.5,Core i5 7300HQ,256,0,SSD,No,Nvidia,GeForce GTX 1050 +Asus,FX502VM-DM560T (i7-7700HQ/8GB/1TB,Gaming,15.6,8,Windows 10,2.24,1339.0,Full HD,1920,1080,No,No,No,Intel,2.8,Core i7 7700HQ,128,1024,SSD,HDD,Nvidia,GeForce GTX1060 +Vero,K146 (N3350/4GB/32GB/W10),Notebook,14.0,4,Windows 10,1.22,202.9,Standard,1920,1080,No,No,No,Intel,1.1,Celeron Dual Core N3350,32,0,Flash Storage,No,Intel,HD Graphics 500 +Lenovo,ThinkPad Yoga,2 in 1 Convertible,13.3,8,Windows 10,1.37,1970.0,Full HD,1920,1080,Yes,Yes,No,Intel,2.7,Core i7 7500U,512,0,SSD,No,Intel,HD Graphics 620 +Lenovo,Yoga 510-15IKB,2 in 1 Convertible,15.6,8,Windows 10,2.08,959.0,Full HD,1920,1080,Yes,No,No,Intel,2.5,Core i5 7200U,256,0,SSD,No,AMD,Radeon R7 M460 +Apple,"MacBook 12""",Ultrabook,12.0,8,Mac OS X,0.92,1165.0,Standard,2304,1440,No,Yes,Yes,Intel,1.2,Core M,512,0,Flash Storage,No,Intel,HD Graphics 5300 +Lenovo,ThinkPad X1,2 in 1 Convertible,14.0,8,Windows 10,1.42,2330.0,Standard,2560,1440,Yes,Yes,No,Intel,2.5,Core i5 7200U,256,0,SSD,No,Intel,HD Graphics 620 +Asus,R417NA-RS01 (N3350/4GB/32GB/W10),Notebook,14.0,4,Windows 10,1.63,299.0,Standard,1366,768,No,No,No,Intel,1.1,Celeron Dual Core N3350,32,0,Flash Storage,No,Intel,HD Graphics 500 +Dell,Latitude 3580,Notebook,15.6,8,Windows 10,1.95,810.0,Standard,1366,768,No,No,No,Intel,2.5,Core i5 7200U,128,0,SSD,No,Intel,HD Graphics 620 +Lenovo,Yoga 910-13IKB,2 in 1 Convertible,13.9,8,Windows 10,1.38,1349.0,Full HD,1920,1080,Yes,Yes,No,Intel,2.7,Core i7 7500U,256,0,SSD,No,Intel,HD Graphics 620 +Dell,Vostro 5568,Notebook,15.6,8,Windows 10,2.0,739.0,Full HD,1920,1080,No,No,No,Intel,2.0,Core i3 6006U,256,0,SSD,No,AMD,Radeon R5 M420X +HP,ZBook 17,Workstation,15.6,8,Windows 10,3.14,2064.9,Full HD,1920,1080,No,No,No,Intel,2.8,Core i7 7700HQ,256,0,SSD,No,Nvidia,Quadro M2200 +Asus,Pro P2540UA-XS51,Notebook,15.6,8,Windows 10,2.37,1099.0,Full HD,1920,1080,No,No,No,Intel,2.5,Core i5 7200U,256,0,SSD,No,Intel,HD Graphics 620 +Dell,XPS 13,Ultrabook,13.3,8,Windows 10,1.29,1499.0,Full HD,1920,1080,No,No,No,Intel,2.5,Core i5 7200U,256,0,SSD,No,Intel,HD Graphics 620 +Dell,XPS 15,Notebook,15.6,8,Windows 10,2.06,1749.0,4K Ultra HD,3840,2160,Yes,No,No,Intel,2.5,Core i5 7300HQ,256,0,SSD,No,Nvidia,GeForce GTX 1050 +Dell,Latitude 3180,Netbook,11.6,4,Windows 10,1.63,744.0,Standard,1366,768,No,No,No,Intel,1.1,Pentium Quad Core N4200,128,0,SSD,No,Intel,HD Graphics 505 +HP,EliteBook 820,Netbook,12.5,8,Windows 10,1.26,1389.0,Standard,1366,768,No,No,No,Intel,2.6,Core i5 7300U,256,0,SSD,No,Intel,HD Graphics 620 +Toshiba,Satellite Pro,Notebook,15.6,4,Windows 10,2.1,780.0,Standard,1366,768,No,No,No,Intel,2.3,Core i5 6200U,500,0,HDD,No,Intel,HD Graphics 520 +HP,15-ba043na (A12-9700P/8GB/2TB/W10),Notebook,15.6,8,Windows 10,2.04,629.0,Standard,1366,768,No,No,No,AMD,2.5,A12-Series 9700P,2048,0,HDD,No,AMD,Radeon R7 Graphics +Dell,Inspiron 7567,Gaming,15.6,16,Windows 10,2.62,1679.0,4K Ultra HD,3840,2160,No,No,No,Intel,2.8,Core i7 7700HQ,512,0,SSD,No,Nvidia,GeForce GTX 1050 Ti +Lenovo,IdeaPad 310-15IKB,Notebook,15.6,4,Windows 10,2.4,609.0,Full HD,1920,1080,No,No,No,Intel,2.5,Core i5 7200U,1024,0,HDD,No,Nvidia,GeForce 920M +HP,Omen 17-an012dx,Gaming,17.3,12,Windows 10,3.74,1749.0,Full HD,1920,1080,No,Yes,No,Intel,2.8,Core i7 7700HQ,1024,0,HDD,No,AMD,Radeon RX 580 +MSI,GE72MVR 7RG,Gaming,17.3,16,Windows 10,2.9,2415.0,Full HD,1920,1080,No,No,No,Intel,2.8,Core i7 7700HQ,512,1024,SSD,HDD,Nvidia,GeForce GTX 1070 +Samsung,Notebook 9,Ultrabook,13.3,8,Windows 10,0.81,1499.0,Full HD,1920,1080,No,No,No,Intel,2.5,Core i5 7200U,256,0,SSD,No,Intel,HD Graphics 620 +Dell,Vostro 5568,Notebook,15.6,8,Windows 10,1.98,961.0,Full HD,1920,1080,No,No,No,Intel,2.7,Core i7 7500U,1024,0,HDD,No,Nvidia,GeForce GT 940MX +Dell,Vostro 3568,Notebook,15.6,8,Windows 10,2.18,789.81,Full HD,1920,1080,No,No,No,Intel,2.5,Core i5 7200U,256,0,SSD,No,AMD,Radeon R5 M420 +Lenovo,Thinkpad T470s,Ultrabook,14.0,8,Windows 10,1.32,1859.0,Full HD,1920,1080,No,No,No,Intel,2.7,Core i7 7500U,256,0,SSD,No,Intel,HD Graphics 620 +Razer,Blade Stealth,Ultrabook,12.5,16,Windows 10,1.29,1799.0,4K Ultra HD,3840,2160,Yes,Yes,No,Intel,2.5,Core i7 7500U,512,0,SSD,No,Intel,HD Graphics 620 +HP,Chromebook 11,Netbook,11.6,4,Chrome OS,1.23,385.0,Standard,1366,768,No,No,No,Intel,1.6,Celeron Dual Core N3060,16,0,Flash Storage,No,Intel,HD Graphics 400 +Dell,Alienware 17,Gaming,17.3,16,Windows 10,4.36,2505.02,Full HD,1920,1080,No,Yes,No,Intel,2.8,Core i7 7700HQ,128,1024,SSD,HDD,Nvidia,GeForce GTX 1060 +Dell,Latitude 3480,Notebook,14.0,4,Windows 10,1.76,755.0,Standard,1366,768,No,No,No,Intel,2.3,Core i5 6200U,500,0,HDD,No,Intel,HD Graphics 520 +Lenovo,V110-15ISK (i3-6006U/4GB/500GB/W10),Notebook,15.6,4,Windows 10,2.1,489.9,Standard,1366,768,No,No,No,Intel,2.0,Core i3 6006U,500,0,HDD,No,Intel,HD Graphics 520 +Toshiba,Tecra X40-D-10Z,Ultrabook,14.0,4,Windows 10,1.25,1090.0,Standard,1366,768,No,No,No,Intel,2.5,Core i5 7200U,128,0,SSD,No,Intel,HD Graphics 620 +Lenovo,Thinkpad X1,Ultrabook,14.0,8,Windows 10,1.13,2499.0,Full HD,1920,1080,No,Yes,No,Intel,2.7,Core i7 7500U,512,0,SSD,No,Intel,HD Graphics 620 +MSI,GL62M 7RD,Gaming,15.6,8,Windows 10,2.4,1199.0,Full HD,1920,1080,No,No,No,Intel,2.5,Core i5 7300HQ,256,0,SSD,No,Nvidia,GeForce GTX 1050 +Lenovo,ThinkPad X1,Ultrabook,14.0,8,Windows 10,1.13,1875.0,Full HD,1920,1080,No,Yes,No,Intel,2.5,Core i5 7200U,256,0,Flash Storage,No,Intel,HD Graphics 620 +Toshiba,Satellite Pro,Notebook,14.0,4,Windows 10,1.75,499.0,Standard,1366,768,No,No,No,Intel,2.1,Pentium Dual Core 4405U,128,0,SSD,No,Intel,HD Graphics 510 +Asus,ZenBook Flip,2 in 1 Convertible,13.3,8,Windows 10,1.1,1358.0,Full HD,1920,1080,Yes,No,No,Intel,2.5,Core i5 7200U,256,0,SSD,No,Intel,HD Graphics 620 +Dell,Latitude 3480,Notebook,14.0,4,Windows 10,1.76,585.0,Standard,1366,768,No,No,No,Intel,2.0,Core i3 6006U,500,0,HDD,No,Intel,HD Graphics 520 +Acer,Chromebook 11,Netbook,11.6,4,Chrome OS,1.35,355.0,Standard,1366,768,No,Yes,No,Intel,1.6,Celeron Dual Core N3060,32,0,Flash Storage,No,Intel,HD Graphics 400 +Acer,Swift 3,Notebook,14.0,8,Windows 10,1.5,619.0,Full HD,1920,1080,No,Yes,No,Intel,2.4,Core i3 7100U,128,0,SSD,No,Intel,HD Graphics 620 +Razer,Blade Pro,Gaming,17.3,32,Windows 10,3.49,5499.0,4K Ultra HD,3840,2160,Yes,No,No,Intel,2.9,Core i7 7820HK,512,0,SSD,No,Nvidia,GeForce GTX 1080 +Lenovo,Thinkpad X1,Ultrabook,14.0,16,Windows 10,1.1,2099.0,Quad HD+,2560,1440,No,Yes,No,Intel,2.6,Core i7 6600U,512,0,SSD,No,Intel,HD Graphics 520 +Asus,VivoBook Max,Notebook,15.6,4,Linux,2.1,519.0,Full HD,1920,1080,No,No,No,Intel,2.5,Core i5 7200U,1024,0,HDD,No,Nvidia,GeForce 920 +Lenovo,Thinkpad T460,Notebook,14.0,8,Windows 10,1.7,1186.0,Full HD,1920,1080,No,No,No,Intel,2.3,Core i5 6200U,256,0,SSD,No,Intel,HD Graphics 520 +Lenovo,ThinkPad T470s,Notebook,14.0,8,Windows 10,1.32,1650.0,Full HD,1920,1080,No,Yes,No,Intel,2.6,Core i5 7300U,256,0,SSD,No,Intel,HD Graphics 620 +Dell,Alienware 15,Gaming,15.6,16,Windows 10,3.21,2774.63,Full HD,1920,1080,No,No,No,Intel,2.8,Core i7 7700HQ,256,1024,SSD,HDD,Nvidia,GeForce GTX 1070 +Asus,Rog GL702VS-BA023T,Gaming,17.3,16,Windows 10,2.9,2419.0,Full HD,1920,1080,No,No,No,Intel,2.8,Core i7 7700HQ,256,1024,SSD,HDD,Nvidia,GeForce GTX 1070 +Toshiba,Satellite Pro,Notebook,15.6,4,Windows 10,2.0,669.0,Standard,1366,768,No,No,No,Intel,2.4,Core i3 7100U,500,0,HDD,No,Intel,HD Graphics 620 +Lenovo,N42-20 Chromebook,Notebook,14.0,4,Chrome OS,1.5,325.0,Standard,1366,768,No,No,No,Intel,1.6,Celeron Quad Core N3160,16,0,Flash Storage,No,Intel,HD Graphics 400 +Asus,R558UA-DM966T (i5-7200U/8GB/128GB/FHD/W10),Notebook,15.6,8,Windows 10,2.3,590.0,Full HD,1920,1080,No,No,No,Intel,2.5,Core i5 7200U,128,0,HDD,No,Intel,HD Graphics 620 +Asus,Rog GL702VM-GC017T,Gaming,17.3,16,Windows 10,2.73,1799.0,Full HD,1920,1080,No,No,No,Intel,2.6,Core i7 6700HQ,512,1024,SSD,HDD,Nvidia,GeForce GTX 1060 +Dell,Alienware 17,Gaming,17.3,32,Windows 10,4.42,3072.89,Full HD,1920,1080,No,Yes,No,Intel,2.8,Core i7 7700HQ,512,1024,SSD,HDD,Nvidia,GeForce GTX 1070 +HP,ProBook 470,Notebook,17.3,8,Windows 10,2.63,910.0,Standard,1600,900,No,No,No,Intel,2.5,Core i5 7200U,1024,0,HDD,No,Nvidia,GeForce 930MX +Dell,Vostro 3568,Notebook,15.6,8,Windows 10,2.18,713.99,Standard,1366,768,No,No,No,Intel,2.5,Core i5 7200U,128,0,SSD,No,Intel,HD Graphics 620 +HP,EliteBook 840,Ultrabook,14.0,8,Windows 7,1.54,1870.0,Full HD,1920,1080,No,No,No,Intel,2.5,Core i7 6500U,512,0,SSD,No,Intel,HD Graphics 520 +Dell,Vostro 3568,Notebook,15.6,4,Windows 10,2.18,739.0,Full HD,1920,1080,No,No,No,Intel,2.7,Core i7 7500U,256,0,SSD,No,AMD,Radeon R5 M420 +HP,Chromebook X360,2 in 1 Convertible,11.6,4,Chrome OS,1.4,615.0,Standard,1366,768,Yes,No,No,Intel,1.1,Celeron Dual Core N3350,32,0,Flash Storage,No,Intel,HD Graphics 500 +Asus,ZenBook UX310UQ-GL026T,Ultrabook,13.3,8,Windows 10,1.45,1026.0,Full HD,1920,1080,No,Yes,No,Intel,2.3,Core i5 6200U,512,0,SSD,No,Nvidia,GeForce 940M +HP,EliteBook x360,2 in 1 Convertible,13.3,8,Windows 10,1.28,2277.0,Full HD,1920,1080,Yes,No,No,Intel,2.5,Core i5 7200U,256,0,SSD,No,Intel,HD Graphics 620 +HP,EliteBook 840,Ultrabook,14.0,8,Windows 10,1.54,1468.0,Full HD,1920,1080,No,No,No,Intel,2.5,Core i7 6500U,512,0,SSD,No,Intel,HD Graphics 520 +HP,250 G6,Notebook,15.6,4,No OS,1.86,299.0,Standard,1366,768,No,No,No,Intel,1.6,Celeron Dual Core N3060,128,0,SSD,No,Intel,HD Graphics 400 +Asus,Rog GL502VM-DS74,Gaming,15.6,16,Windows 10,2.1,1899.0,Full HD,1920,1080,No,No,No,Intel,2.8,Core i7 7700HQ,128,1024,SSD,HDD,Nvidia,GeForce GTX 1060 +Dell,Inspiron 5767,Notebook,17.3,8,Linux,2.83,865.0,Full HD,1920,1080,No,No,No,Intel,2.7,Core i7 7500U,1024,0,HDD,No,AMD,Radeon R7 M445 +Lenovo,ThinkPad T470p,Ultrabook,14.0,8,Windows 10,1.96,1903.0,Full HD,1920,1080,No,Yes,No,Intel,2.8,Core i7 7700HQ,256,0,SSD,No,Nvidia,GeForce GT 940MX +Asus,K556UR-DM621T (i7-7500U/8GB/256GB/GeForce,Notebook,15.6,8,Windows 10,2.3,787.0,Full HD,1920,1080,No,Yes,No,Intel,2.7,Core i7 7500U,256,0,SSD,No,Nvidia,GeForce GTX 930MX +Dell,Latitude 5580,Notebook,15.6,8,Windows 10,1.9,945.0,Full HD,1920,1080,No,No,No,Intel,2.5,Core i5 7200U,128,0,SSD,No,Intel,HD Graphics 620 +Asus,X541NA (N4200/4GB/1TB/W10),Notebook,15.6,4,Windows 10,2.0,449.0,Standard,1366,768,No,No,No,Intel,1.1,Pentium Quad Core N4200,1024,0,HDD,No,Intel,HD Graphics 505 +HP,EliteBook x360,2 in 1 Convertible,13.3,8,Windows 10,1.28,2559.0,Full HD,1920,1080,Yes,No,No,Intel,2.8,Core i7 7600U,256,0,SSD,No,Intel,HD Graphics 620 +Dell,Inspiron 5368,Notebook,13.3,8,Windows 10,1.62,649.0,Full HD,1920,1080,Yes,No,No,Intel,2.3,Core i5 6200U,1024,0,HDD,No,Intel,HD Graphics 520 +Lenovo,IdeaPad 110-15ISK,Notebook,15.6,4,No OS,2.2,469.0,Full HD,1920,1080,No,No,No,Intel,2.0,Core i3 6006U,1024,0,HDD,No,Intel,HD Graphics 520 +Lenovo,ThinkPad E570,Notebook,15.6,8,Windows 10,2.3,850.66,Full HD,1920,1080,No,Yes,No,Intel,2.5,Core i5 7200U,1024,0,HDD,No,Intel,HD Graphics 620 +HP,EliteBook 850,Notebook,15.6,8,Windows 10,1.84,1349.0,Full HD,1920,1080,No,No,No,Intel,2.6,Core i5 7300U,256,0,SSD,No,AMD,Radeon R7 M465 +Toshiba,Portege X30-D-10X,Notebook,13.3,4,Windows 10,1.05,1285.0,Full HD,1920,1080,No,No,No,Intel,2.5,Core i5 7200U,128,0,SSD,No,Intel,HD Graphics 620 +Lenovo,Legion Y520-15IKBN,Gaming,15.6,8,No OS,2.5,1017.0,Full HD,1920,1080,No,Yes,No,Intel,2.5,Core i5 7300HQ,1024,0,HDD,No,Nvidia,GeForce GTX 1050 +Dell,XPS 13,Ultrabook,13.3,16,Windows 10,1.29,2240.0,Quad HD+,3200,1800,Yes,No,No,Intel,2.5,Core i7 7660U,512,0,SSD,No,Intel,Iris Plus Graphics 640 +HP,Probook 450,Notebook,15.6,4,Windows 10,2.07,910.0,Full HD,1920,1080,No,No,No,Intel,2.3,Core i5 6200U,500,0,HDD,No,Intel,HD Graphics 520 +Toshiba,Portégé Z30-C-188,Ultrabook,13.3,8,Windows 10,1.2,1095.0,Standard,1366,768,No,No,No,Intel,2.3,Core i5 6200U,256,0,SSD,No,Intel,HD Graphics 520 +Lenovo,ThinkPad Yoga,2 in 1 Convertible,13.3,8,Windows 10,1.37,1950.0,Full HD,1920,1080,Yes,Yes,No,Intel,2.7,Core i7 7500U,256,0,SSD,No,Intel,HD Graphics 620 +Acer,TMX349-G2-M-50FS (i5-7200U/8GB/256GB/FHD/W10),Notebook,14.0,8,Windows 10,1.56,902.0,Full HD,1920,1080,No,Yes,No,Intel,2.5,Core i5 7200U,256,0,SSD,No,Intel,HD Graphics 620 +Dell,Precision 3520,Workstation,15.6,8,Windows 10,2.23,1778.0,Full HD,1920,1080,No,No,No,Intel,2.8,Core i7 7700HQ,1024,0,HDD,No,Nvidia,Quadro M620 +Lenovo,ThinkPad L570,Notebook,15.6,4,Windows 10,2.38,1055.0,Standard,1366,768,No,No,No,Intel,2.5,Core i5 7200U,500,0,HDD,No,Intel,HD Graphics 620 +Lenovo,IdeaPad 110-15ISK,Notebook,15.6,4,No OS,2.2,479.0,Full HD,1920,1080,No,No,No,Intel,2.0,Core i3 6006U,1024,0,HDD,No,AMD,Radeon R5 M430 +Toshiba,Tecra A50-D-11D,Notebook,15.6,8,Windows 10,2.0,1388.0,Full HD,1920,1080,No,Yes,No,Intel,2.7,Core i7 7500U,256,0,SSD,No,Intel,HD Graphics 620 +Lenovo,Thinkpad 13,Notebook,13.3,4,Windows 10,1.44,735.0,Full HD,1920,1080,No,Yes,No,Intel,2.4,Core i3 7100U,180,0,SSD,No,Intel,HD Graphics 620 +Samsung,Notebook 9,Ultrabook,15.0,16,Windows 10,1.23,1849.0,Full HD,1920,1080,No,No,No,Intel,2.7,Core i7 7500U,256,0,SSD,No,Nvidia,GeForce 940MX +Dell,Latitude 7280,Ultrabook,12.5,8,Windows 10,1.6,1690.0,Full HD,1920,1080,No,No,No,Intel,2.8,Core i7 7600U,256,0,SSD,No,Intel,HD Graphics 620 +Asus,X541NA-GO121 (N4200/4GB/1TB/Linux),Notebook,15.6,4,Linux,2.0,398.99,Standard,1366,768,No,No,No,Intel,1.1,Pentium Quad Core N4200,1024,0,HDD,No,Intel,HD Graphics 505 +Xiaomi,Mi Notebook,Ultrabook,13.3,8,Windows 10,1.28,935.0,Full HD,1920,1080,No,Yes,No,Intel,2.3,Core i5 6200U,256,0,SSD,No,Nvidia,GeForce 940MX +Dell,Vostro 5568,Notebook,15.6,4,Windows 10,2.18,912.5,Full HD,1920,1080,No,No,No,Intel,2.5,Core i5 7200U,128,1024,SSD,HDD,Nvidia,GeForce 940MX +HP,ProBook 450,Notebook,15.6,4,Windows 10,2.04,839.0,Full HD,1920,1080,No,No,No,Intel,2.5,Core i5 7200U,256,0,SSD,No,Intel,HD Graphics 620 +HP,EliteBook x360,2 in 1 Convertible,13.3,4,Windows 10,1.28,1700.0,Full HD,1920,1080,Yes,No,No,Intel,2.5,Core i5 7200U,256,0,SSD,No,Intel,HD Graphics 620 +HP,Pavilion x360,2 in 1 Convertible,15.6,4,Windows 10,2.3,684.8,Standard,1366,768,Yes,No,No,Intel,2.5,Core i5 7200U,500,0,HDD,No,Intel,HD Graphics 620 +Asus,VivoBook L402NA,Notebook,14.1,4,Windows 10,1.65,348.0,Standard,1366,768,No,No,No,Intel,1.1,Celeron Dual Core N3350,32,0,Flash Storage,No,Intel,HD Graphics 500 +Lenovo,IdeaPad 510-15ISK,Notebook,15.6,8,Windows 10,2.2,669.0,Full HD,1920,1080,No,Yes,No,Intel,2.5,Core i7 6500U,1024,0,HDD,No,Nvidia,GeForce 940MX +Dell,Inspiron 3552,Notebook,15.6,4,Windows 10,2.2,369.0,Standard,1366,768,No,No,No,Intel,1.6,Pentium Quad Core N3710,500,0,HDD,No,Intel,HD Graphics +HP,EliteBook x360,2 in 1 Convertible,13.3,4,Windows 10,1.28,1799.0,Full HD,1920,1080,Yes,No,No,Intel,2.5,Core i5 7200U,256,0,SSD,No,Intel,HD Graphics 620 +Dell,Vostro 3568,Notebook,15.6,4,Linux,2.18,455.7,Standard,1366,768,No,No,No,Intel,2.0,Core i3 6006U,1024,0,HDD,No,AMD,Radeon R5 M420X +Asus,Rog GL753VD-GC082T,Gaming,17.3,12,Windows 10,2.2,1369.9,Full HD,1920,1080,No,No,No,Intel,2.5,Core i5 7300HQ,128,1024,SSD,HDD,Nvidia,GeForce GTX 1050 +Acer,Chromebook C731-C78G,Netbook,11.6,4,Chrome OS,1.25,297.0,Standard,1366,768,No,Yes,No,Intel,1.6,Celeron Dual Core N3060,32,0,Flash Storage,No,Intel,HD Graphics 400 +Lenovo,IdeaPad 110-17ACL,Notebook,17.3,4,Windows 10,2.8,379.0,Standard,1600,900,No,No,No,AMD,2.2,A4-Series 7210,500,0,HDD,No,AMD,Radeon R3 +HP,Probook 640,Notebook,14.0,4,Windows 10,1.95,1265.0,Full HD,1920,1080,No,No,No,Intel,2.5,Core i5 7200U,128,0,SSD,No,Intel,HD Graphics 620 +HP,Envy x360,2 in 1 Convertible,13.3,16,Windows 10,1.42,1399.0,Quad HD+,3200,1800,Yes,No,No,Intel,2.7,Core i7 7500U,256,0,SSD,No,Intel,HD Graphics 620 +Samsung,Notebook 9,Ultrabook,15.0,8,Windows 10,1.17,1699.0,Full HD,1920,1080,No,No,No,Intel,2.7,Core i7 7500U,256,0,SSD,No,Intel,HD Graphics 620 +Lenovo,ThinkPad T470s,Ultrabook,14.0,8,Windows 10,1.32,1799.0,Full HD,1920,1080,No,Yes,No,Intel,2.5,Core i5 7200U,256,0,SSD,No,Intel,HD Graphics 620 +MSI,GS73VR Stealth,Gaming,17.3,16,Windows 10,2.43,2649.0,4K Ultra HD,3840,2160,No,Yes,No,Intel,2.6,Core i7 6700HQ,512,2048,SSD,HDD,Nvidia,GeForce GTX 1060 +Toshiba,Portege X30-D-10V,Notebook,13.3,8,Windows 10,1.05,1475.0,Full HD,1920,1080,No,No,No,Intel,2.5,Core i5 7200U,256,0,SSD,No,Intel,HD Graphics 620 +Dell,Inspiron 7567,Gaming,15.6,8,Linux,2.62,929.0,Full HD,1920,1080,No,No,No,Intel,2.8,Core i7 7700HQ,1024,0,HDD,No,Nvidia,GeForce GTX 1050Ti +HP,ProBook 450,Notebook,15.6,8,Windows 10,2.04,900.0,Full HD,1920,1080,No,No,No,Intel,2.7,Core i7 7500U,1024,0,HDD,No,Nvidia,GeForce 930MX +Dell,Vostro 3568,Notebook,15.6,4,Windows 10,2.18,614.0,Standard,1366,768,No,No,No,Intel,2.0,Core i3 6006U,1024,0,HDD,No,AMD,Radeon R5 M420X +Dell,Latitude 5580,Notebook,15.6,8,Windows 10,1.9,935.0,Full HD,1920,1080,No,No,No,Intel,2.6,Core i5 7300U,500,0,HDD,No,Intel,HD Graphics 620 +Dell,XPS 13,2 in 1 Convertible,13.3,8,Windows 10,1.24,2013.1,Quad HD+,3200,1800,Yes,No,No,Intel,1.3,Core i7 7Y75,512,0,SSD,No,Intel,HD Graphics 615 +Asus,G701VO-IH74K (i7-6820HK/32GB/2x,Gaming,17.3,32,Windows 10,3.58,1279.0,Full HD,1920,1080,No,Yes,No,Intel,2.7,Core i7 6820HK,256,256,SSD,SSD,Nvidia,GeForce GTX 980M +Dell,XPS 13,2 in 1 Convertible,13.3,16,Windows 10,1.22,1649.0,Full HD,1920,1080,Yes,No,No,Intel,1.3,Core i7 7Y75,256,0,SSD,No,Intel,HD Graphics 615 +Lenovo,ThinkPad X1,Ultrabook,14.0,8,Windows 10,1.13,2049.0,Full HD,1920,1080,No,Yes,No,Intel,2.7,Core i7 7500U,256,0,Flash Storage,No,Intel,HD Graphics 620 +Lenovo,ThinkPad T570,Notebook,15.6,8,Windows 10,1.95,1962.99,Full HD,1920,1080,No,Yes,No,Intel,2.5,Core i5 7200U,512,0,SSD,No,Intel,HD Graphics 620 +LG,Gram 15Z970,Ultrabook,15.6,16,Windows 10,1.08,2099.0,Full HD,1920,1080,Yes,Yes,No,Intel,2.7,Core i7 7500U,512,0,SSD,No,Intel,HD Graphics 620 +HP,Elitebook 820,Netbook,12.5,8,Windows 10,1.26,1483.0,Full HD,1920,1080,No,No,No,Intel,2.7,Core i7 7500U,512,0,SSD,No,Intel,HD Graphics 620 +Acer,Chromebook CB5-571-C1DZ,Notebook,15.6,4,Chrome OS,2.2,359.0,Full HD,1920,1080,No,Yes,No,Intel,1.5,Celeron Dual Core 3205U,16,0,Flash Storage,No,Intel,HD Graphics +Lenovo,IdeaPad Y700-15ISK,Notebook,15.6,8,Windows 10,2.6,789.0,Full HD,1920,1080,No,Yes,No,Intel,2.3,Core i5 6300HQ,128,1024,SSD,HDD,Nvidia,GeForce GTX 960M +LG,Gram 14Z970,Ultrabook,14.0,8,Windows 10,0.98,1899.0,Full HD,1920,1080,Yes,Yes,No,Intel,2.7,Core i7 7500U,512,0,SSD,No,Intel,HD Graphics 620 +Dell,Latitude 5480,Notebook,14.0,8,Windows 10,1.6,1205.0,Full HD,1920,1080,No,No,No,Intel,2.8,Core i5 7440HQ,256,0,SSD,No,Intel,HD Graphics 620 +HP,Elitebook Folio,Ultrabook,12.5,8,Windows 10,1.09,3100.0,4K Ultra HD,3840,2160,Yes,No,No,Intel,1.2,Core M 6Y75,240,0,SSD,No,Intel,HD Graphics 515 +Lenovo,IdeaPad 510-15IKB,Notebook,15.6,6,Windows 10,2.2,789.0,Full HD,1920,1080,No,No,No,Intel,2.7,Core i7 7500U,256,0,SSD,No,Nvidia,GeForce 940MX +HP,ProBook 450,Notebook,15.6,8,Windows 10,2.04,1018.99,Full HD,1920,1080,No,No,No,Intel,2.7,Core i7 7500U,256,0,SSD,No,Nvidia,GeForce 930MX +Acer,Aspire E5-575,Notebook,15.6,4,Windows 10,2.4,499.0,Full HD,1920,1080,No,No,No,Intel,2.4,Core i3 7100U,1024,0,HDD,No,Intel,HD Graphics 620 +Lenovo,ThinkPad 13,Notebook,13.3,4,Windows 10,1.44,881.0,Full HD,1920,1080,No,No,No,Intel,2.5,Core i5 7200U,128,0,SSD,No,Intel,HD Graphics 620 +HP,Probook 430,Notebook,13.3,8,Windows 10,1.49,960.0,Full HD,1920,1080,No,No,No,Intel,2.5,Core i5 7200U,256,0,SSD,No,Intel,HD Graphics 620 +MSI,GE72VR 6RF,Gaming,17.3,16,Windows 10,2.7,1599.0,Full HD,1920,1080,No,No,No,Intel,2.8,Core i7 7700HQ,256,1024,SSD,HDD,Nvidia,GeForce GTX 1050 Ti +Dell,Inspiron 7567,Gaming,15.6,16,Windows 10,2.6,1349.0,Full HD,1920,1080,No,No,No,Intel,2.8,Core i7 7700HQ,128,1024,SSD,HDD,Nvidia,GeForce GTX 1050 Ti +MSI,GL62M 7RD,Gaming,15.6,8,Windows 10,2.2,1119.91,Full HD,1920,1080,No,No,No,Intel,2.5,Core i5 7300HQ,128,1024,SSD,HDD,Nvidia,GeForce GTX 1050 +Dell,Vostro 3568,Notebook,15.6,4,Windows 10,2.18,684.99,Standard,1366,768,No,No,No,Intel,2.5,Core i5 7200U,1024,0,HDD,No,AMD,Radeon R5 M420 +HP,EliteBook 850,Ultrabook,15.6,8,Windows 10,1.84,1296.99,Full HD,1920,1080,No,No,No,Intel,2.5,Core i7 6500U,256,0,SSD,No,AMD,Radeon R7 M365X +HP,Envy 13-AB077cl,Ultrabook,13.3,8,Windows 10,1.39,1149.0,Quad HD+,3200,1800,Yes,No,No,Intel,2.7,Core i7 7500U,256,0,SSD,No,Intel,HD Graphics 620 +Toshiba,Tecra Z50-C-140,Notebook,15.6,16,Windows 10,2.4,1975.0,Full HD,1920,1080,No,Yes,No,Intel,2.6,Core i7 6600U,256,0,SSD,No,Nvidia,GeForce 930M +Lenovo,ThinkPad Yoga,2 in 1 Convertible,13.3,8,Windows 10,1.37,1825.0,Full HD,1920,1080,Yes,Yes,No,Intel,2.5,Core i5 7200U,512,0,SSD,No,Intel,HD Graphics 620 +Dell,Latitude 3580,Notebook,15.6,4,Windows 10,1.95,729.9,Standard,1366,768,No,No,No,Intel,2.3,Core i5 6200U,500,0,HDD,No,Intel,HD Graphics 520 +Lenovo,Thinkpad X270,Ultrabook,12.5,8,Windows 10,1.36,1650.0,Full HD,1920,1080,No,Yes,No,Intel,2.7,Core i7 7500U,256,0,SSD,No,Intel,HD Graphics 620 +HP,Probook 650,Notebook,15.6,8,Windows 10,2.31,1165.0,Full HD,1920,1080,No,No,No,Intel,2.3,Core i5 6200U,256,0,SSD,No,Intel,HD Graphics 520 +Dell,Vostro 3568,Notebook,15.6,4,Windows 10,2.18,708.06,Standard,1366,768,No,No,No,Intel,2.5,Core i5 7200U,1024,0,HDD,No,Intel,HD Graphics 620 +HP,ProBook 640,Notebook,14.0,4,Windows 10,1.95,1149.0,Standard,1366,768,No,No,No,Intel,2.3,Core i5 6200U,500,0,HDD,No,Intel,HD Graphics 520 +Lenovo,IdeaPad 320-15IAP,Notebook,15.6,4,Windows 10,2.2,309.0,Standard,1366,768,No,No,No,Intel,1.1,Pentium Quad Core N4200,1024,0,HDD,No,Intel,HD Graphics 505 +HP,EliteBook 820,Ultrabook,12.5,4,Windows 10,1.26,1579.0,Full HD,1920,1080,No,No,No,Intel,2.3,Core i5 6200U,500,0,HDD,No,Intel,HD Graphics 520 +HP,250 G6,Notebook,15.6,4,No OS,1.86,288.9,Standard,1366,768,No,No,No,Intel,1.6,Celeron Dual Core N3060,1024,0,HDD,No,Intel,HD Graphics 400 +Lenovo,Yoga 900-13ISK,2 in 1 Convertible,13.3,16,Windows 10,1.3,1799.0,Quad HD+,3200,1800,Yes,Yes,No,Intel,2.2,Core i7 6560U,1024,0,SSD,No,Intel,Iris Graphics 540 +Toshiba,Tecra Z40-C-12X,Notebook,14.0,4,Windows 10,1.47,1105.0,Full HD,1920,1080,No,Yes,No,Intel,2.3,Core i5 6200U,128,0,SSD,No,Intel,HD Graphics 520 +HP,EliteBook 820,Netbook,12.5,8,Windows 10,1.26,1669.0,Full HD,1920,1080,No,No,No,Intel,2.3,Core i5 6200U,256,0,SSD,No,Intel,HD Graphics 520 +Dell,Vostro 3568,Notebook,15.6,4,Windows 10,2.18,558.6,Standard,1366,768,No,No,No,Intel,2.0,Core i3 6006U,1024,0,HDD,No,Intel,HD Graphics 520 +MSI,GP62M Leopard,Gaming,15.6,8,Windows 10,2.2,1199.0,Full HD,1920,1080,No,No,No,Intel,2.8,Core i7 7700HQ,128,1024,SSD,HDD,Nvidia,GeForce GTX 1050 +Dell,Latitude 7480,Ultrabook,14.0,8,Windows 10,1.36,1639.0,Full HD,1920,1080,No,No,No,Intel,2.5,Core i5 7200U,256,0,SSD,No,Intel,HD Graphics 620 +Dell,Alienware 17,Gaming,17.3,16,Windows 10,4.36,2758.0,Standard,2560,1440,No,No,No,Intel,2.7,Core i7 6820HK,512,1024,SSD,HDD,Nvidia,GeForce GTX 1080 +HP,Omen 17-W006na,Gaming,17.3,8,Windows 10,2.75,1399.0,Full HD,1920,1080,No,Yes,No,Intel,2.3,Core i5 6300HQ,128,1024,SSD,HDD,Nvidia,GeForce GTX 965M +Asus,X751SV-TY001T (N3710/4GB/1TB/GeForce,Notebook,17.3,4,Windows 10,2.8,530.0,Standard,1600,900,No,No,No,Intel,1.6,Pentium Quad Core N3710,1024,0,HDD,No,Nvidia,GeForce 920MX +Acer,TravelMate P259-G2,Notebook,15.6,4,Windows 10,2.23,619.0,Standard,1366,768,No,No,No,Intel,2.5,Core i5 7200U,500,0,HDD,No,Intel,HD Graphics 620 +Toshiba,Tecra A50-C-1ZV,Notebook,15.6,8,Windows 10,2.2,1119.0,Standard,1366,768,No,No,No,Intel,2.3,Core i5 6200U,256,0,SSD,No,Intel,HD Graphics 520 +Lenovo,Yoga 700-11ISK,2 in 1 Convertible,11.3,8,Windows 10,1.1,1299.0,Full HD,1920,1080,Yes,Yes,No,Intel,1.2,Core M m7-6Y75,256,0,SSD,No,Intel,HD Graphics 515 +Lenovo,IdeaPad Y700-15ACZ,Gaming,15.6,16,Windows 10,2.5,999.0,Full HD,1920,1080,No,Yes,No,AMD,2.1,FX 8800P,512,1024,SSD,HDD,AMD,Radeon R9 M385 +Dell,Latitude 7280,Ultrabook,12.5,8,Windows 10,1.36,1472.2,Full HD,1920,1080,Yes,No,No,Intel,2.5,Core i5 7200U,256,0,SSD,No,Intel,HD Graphics +Lenovo,IdeaPad 310-15IKB,Notebook,15.6,8,No OS,2.2,685.0,Full HD,1920,1080,No,No,No,Intel,2.7,Core i7 7500U,1024,0,HDD,No,Nvidia,GeForce 920MX +Dell,Insprion 5767,Notebook,17.3,4,Windows 10,2.36,659.0,Standard,1600,900,No,No,No,Intel,2.0,Core i3 6006U,1024,0,HDD,No,AMD,Radeon R7 M445 +Acer,Chromebook 14,Notebook,14.0,4,Chrome OS,1.68,349.0,Standard,1366,768,No,No,No,Intel,1.6,Celeron Dual Core N3060,32,0,Flash Storage,No,Intel,HD Graphics 400 +HP,ZBook Studio,Workstation,15.6,8,Windows 10,2.0,2249.0,Full HD,1920,1080,No,Yes,No,Intel,2.7,Core i7 6820HQ,8,0,SSD,No,Nvidia,Quadro M1000M +Dell,Latitude 7480,Ultrabook,14.0,8,Windows 10,1.36,1775.0,Full HD,1920,1080,No,No,No,Intel,2.8,Core i7 7600U,256,0,SSD,No,Intel,HD Graphics 620 +Toshiba,Portege Z30-C-1CW,Notebook,13.3,8,Windows 7,1.2,1460.0,Full HD,1920,1080,No,No,No,Intel,2.3,Core i5 6200U,256,0,SSD,No,Intel,HD Graphics 520 +Asus,Chromebook Flip,2 in 1 Convertible,12.5,8,Chrome OS,1.2,1159.0,Full HD,1920,1080,No,No,No,Intel,1.2,Core M M7-6Y75,64,0,Flash Storage,No,Intel,HD Graphics 515 +Lenovo,Thinkpad T460,Ultrabook,14.0,8,Windows 10,1.7,1488.99,Full HD,1920,1080,No,Yes,No,Intel,2.6,Core i7 6600U,256,0,SSD,No,Intel,HD Graphics 520 +Dell,Alienware 17,Gaming,17.3,16,Windows 10,4.36,3154.0,4K Ultra HD,3840,2160,No,Yes,No,Intel,2.8,Core i7 7700HQ,512,1024,SSD,HDD,Nvidia,GeForce GTX 1070 +Dell,XPS 13,2 in 1 Convertible,13.3,8,Windows 10,1.24,1899.0,Full HD,1920,1080,Yes,No,No,Intel,1.2,Core i5 7Y54,256,0,SSD,No,Intel,HD Graphics 615 +HP,ProBook x360,2 in 1 Convertible,11.6,4,Windows 10,1.45,775.0,Standard,1366,768,Yes,No,No,Intel,1.1,Pentium Quad Core N4200,256,0,SSD,No,Intel,HD Graphics 505 +Dell,XPS 13,Ultrabook,13.3,8,Windows 10,1.3,1268.0,Quad HD+,3200,1800,No,No,No,Intel,2.5,Core i7 6500U,256,0,SSD,No,Intel,HD Graphics 520 +Acer,Chromebook C738T-C2EJ,2 in 1 Convertible,11.6,4,Chrome OS,1.25,389.0,Standard,1366,768,Yes,Yes,No,Intel,1.6,Celeron Dual Core N3060,32,0,Flash Storage,No,Intel,HD Graphics 400 +Toshiba,Portege Z30-C-16Z,Notebook,13.3,8,Windows 10,1.2,1535.0,Full HD,1920,1080,No,No,No,Intel,2.4,Core i5 6300U,256,0,SSD,No,Intel,HD Graphics 520 +Lenovo,ThinkPad X270,Ultrabook,12.5,8,Windows 10,1.36,1760.0,Full HD,1920,1080,No,Yes,No,Intel,2.6,Core i5 7300U,256,0,SSD,No,Intel,HD Graphics 620 +Acer,Aspire F5-573G-510L,Notebook,15.6,12,Windows 10,2.4,1009.0,Full HD,1920,1080,No,No,No,Intel,2.5,Core i5 7200U,128,1024,SSD,HDD,Nvidia,GeForce GTX 950M +Toshiba,Portege X20W-D-10V,Ultrabook,12.5,8,Windows 10,1.1,1790.0,Full HD,1920,1080,Yes,No,No,Intel,2.7,Core i7 7500U,512,0,SSD,No,Intel,HD Graphics 620 +HP,ProBook 450,Notebook,15.6,8,Windows 10,2.04,846.5,Standard,1366,768,No,No,No,Intel,2.5,Core i5 7200U,1024,0,HDD,No,Nvidia,GeForce 930MX +Dell,Inspiron 3567,Notebook,15.6,4,Linux,2.25,465.62,Standard,1366,768,No,No,No,Intel,2.0,Core i3 6006U,1024,0,HDD,No,AMD,Radeon R5 M430 +Dell,Latitude 5580,Notebook,15.6,4,Windows 10,1.9,825.0,Standard,1366,768,No,No,No,Intel,2.5,Core i5 7200U,500,0,HDD,No,Intel,HD Graphics 620 +HP,ProBook 450,Notebook,15.6,4,Windows 10,2.04,685.0,Full HD,1920,1080,No,No,No,Intel,2.4,Core i3 7100U,500,0,HDD,No,Intel,HD Graphics 620 +Dell,Alienware 17,Gaming,17.3,32,Windows 10,4.42,3149.0,Full HD,1920,1080,No,Yes,No,Intel,2.8,Core i7 7700HQ,256,1024,SSD,HDD,Nvidia,GeForce GTX 1070 +Lenovo,IdeaPad 310-15IKB,Notebook,15.6,6,Windows 10,2.4,695.0,Full HD,1920,1080,No,No,No,Intel,2.5,Core i5 7200U,256,0,SSD,No,Nvidia,GeForce 920MX +Dell,XPS 13,2 in 1 Convertible,13.3,16,Windows 10,1.22,1899.0,Quad HD+,3200,1800,Yes,No,No,Intel,1.3,Core i7 7Y75,512,0,SSD,No,Intel,HD Graphics 615 +Dell,Latitude E7470,Ultrabook,14.0,8,Windows 10,1.5,1962.98,Standard,2560,1440,Yes,No,No,Intel,2.6,Core i7 6600U,256,0,SSD,No,Intel,HD Graphics 520 +Dell,Alienware 17,Gaming,17.3,32,Windows 10,4.42,2800.0,Full HD,1920,1080,No,No,No,Intel,2.6,Core i7 6700HQ,256,1024,SSD,HDD,Nvidia,GeForce GTX 1070 +Toshiba,Tecra A40-C-1DF,Notebook,14.0,8,Windows 10,1.95,1180.0,Full HD,1920,1080,No,No,No,Intel,2.3,Core i5 6200U,256,0,SSD,No,Intel,HD Graphics 520 +Asus,Rog Strix,Gaming,17.3,16,Windows 10,2.73,2049.9,Full HD,1920,1080,No,No,No,Intel,2.8,Core i7 7700HQ,256,1024,SSD,HDD,Nvidia,GeForce GTX 1060 +HP,Probook 450,Notebook,15.6,8,Windows 10,2.04,979.0,Full HD,1920,1080,No,Yes,No,Intel,2.7,Core i5 7200U,128,1024,SSD,HDD,Nvidia,GeForce 930MX +Lenovo,ThinkPad T460,Notebook,14.0,4,Windows 7,1.7,1002.0,Standard,1366,768,No,No,No,Intel,2.3,Core i5 6200U,508,0,Hybrid,No,Intel,HD Graphics 520 +Asus,Q534UX-BHI7T19 (i7-7500U/16GB/2TB,2 in 1 Convertible,15.6,16,Windows 10,2.3,1799.0,4K Ultra HD,3840,2160,Yes,No,No,Intel,2.7,Core i7 7500U,512,2048,SSD,HDD,Nvidia,GeForce GTX 950M +HP,15-bs053od (i7-7500U/6GB/1TB/W10),Notebook,15.6,6,Windows 10,2.04,579.0,Standard,1366,768,No,No,No,Intel,2.7,Core i7 7500U,1024,0,HDD,No,Intel,HD Graphics 620 +Asus,Rog GL753VE-DS74,Gaming,17.3,16,Windows 10,2.99,1749.0,Full HD,1920,1080,No,No,No,Intel,2.8,Core i7 7700HQ,256,1024,SSD,HDD,Nvidia,GeForce GTX 1050 Ti +Dell,Inspiron 7579,2 in 1 Convertible,15.6,12,Windows 10,2.19,1299.0,Full HD,1920,1080,Yes,Yes,No,Intel,2.7,Core i7 7500U,512,0,SSD,No,Intel,HD Graphics 620 +Toshiba,Portege Z30-C-1CV,Notebook,13.3,4,Windows 7,1.2,1195.0,Full HD,1920,1080,No,No,No,Intel,2.3,Core i5 6200U,128,0,SSD,No,Intel,HD Graphics 520 +Lenovo,IdeaPad 320-15ABR,Notebook,15.6,6,Windows 10,2.2,549.0,Full HD,1920,1080,No,No,No,AMD,3.6,A12-Series 9720P,256,0,SSD,No,AMD,Radeon 530 +Fujitsu,LifeBook A556,Notebook,15.6,4,Windows 10,2.3,649.0,Standard,1366,768,No,No,No,Intel,2.3,Core i5 6200U,256,0,SSD,No,Intel,HD Graphics 520 +Toshiba,Tecra A40-C-1KF,Notebook,14.0,4,Windows 10,1.75,915.0,Standard,1366,768,No,No,No,Intel,2.3,Core i5 6200U,500,0,HDD,No,Intel,HD Graphics 520 +Dell,Inspiron 3567,Notebook,15.6,4,Windows 10,2.25,599.0,Standard,1366,768,No,No,No,Intel,2.5,Core i5 7200U,500,0,HDD,No,AMD,Radeon R5 M430 +HP,Probook 450,Notebook,15.6,8,Windows 10,2.04,806.0,Full HD,1920,1080,No,No,No,Intel,2.5,Core i5 7200U,1024,0,HDD,No,Intel,HD Graphics 620 +Lenovo,Legion Y520-15IKBN,Gaming,15.6,8,Windows 10,2.5,1189.0,Full HD,1920,1080,No,Yes,No,Intel,2.8,Core i7 7700HQ,128,1024,SSD,HDD,Nvidia,GeForce GTX 1060 +Dell,Inspiron 5567,Notebook,15.6,8,Windows 10,2.36,749.0,Standard,1366,768,No,No,No,Intel,2.7,Core i7 7500U,1024,0,HDD,No,AMD,Radeon R7 M445 +Dell,Latitude 5480,Notebook,14.0,8,Windows 10,1.6,1119.0,Full HD,1920,1080,No,No,No,Intel,2.5,Core i5 7200U,128,0,SSD,No,Intel,HD Graphics 620 +HP,EliteBook Folio,Netbook,12.5,8,Windows 10,0.97,1908.0,Full HD,1920,1080,No,No,No,Intel,1.2,Core M 6Y75,512,0,SSD,No,Intel,HD Graphics 515 +HP,15-bs005nv (i3-6006U/4GB/1TB,Notebook,15.6,4,Windows 10,2.1,499.0,Full HD,1920,1080,No,No,No,Intel,2.0,Core i3 6006U,128,1024,SSD,HDD,AMD,Radeon 520 +Lenovo,V110-15IAP (N3350/4GB/128GB/No,Notebook,15.6,4,No OS,1.9,270.62,Standard,1366,768,No,No,No,Intel,1.1,Celeron Dual Core N3350,128,0,SSD,No,Intel,HD Graphics 500 +Lenovo,ThinkPad T560,Notebook,15.6,8,Windows 10,2.3,1349.0,Full HD,1920,1080,No,No,No,Intel,2.3,Core i5 6200U,256,0,SSD,No,Intel,HD Graphics 520 +Dell,Inspiron 5378,2 in 1 Convertible,13.3,8,Windows 10,1.68,889.0,Full HD,1920,1080,Yes,No,No,Intel,2.5,Core i5 7200U,256,0,SSD,No,Intel,HD Graphics 620 +Asus,ZenBook UX310UA-FB485T,Notebook,13.3,8,Windows 10,1.4,1150.0,Quad HD+,3200,1800,No,No,No,Intel,2.5,Core i5 7200U,256,0,SSD,No,Intel,HD Graphics 620 +HP,Spectre 13-V111dx,Ultrabook,13.3,8,Windows 10,1.11,1349.0,Full HD,1920,1080,Yes,Yes,No,Intel,2.7,Core i7 7500U,256,0,SSD,No,Intel,HD Graphics 620 +Acer,Aspire ES1-533,Notebook,15.6,4,Windows 10,2.4,380.0,Standard,1366,768,No,No,No,Intel,1.1,Pentium Quad Core N4200,500,0,HDD,No,Intel,HD Graphics 505 +Asus,Rog GL553VE-DS74,Gaming,15.6,16,Windows 10,2.5,1799.0,Full HD,1920,1080,No,No,No,Intel,2.8,Core i7 7700HQ,256,1024,SSD,HDD,Nvidia,GeForce GTX 1050 Ti +HP,EliteBook 840,Ultrabook,14.0,8,Windows 10,1.48,2089.0,Full HD,1920,1080,No,No,No,Intel,2.7,Core i7 7500U,512,0,SSD,No,Intel,HD Graphics 620 +Acer,Nitro 5,Gaming,15.6,8,Windows 10,2.7,1260.0,Full HD,1920,1080,No,Yes,No,Intel,2.8,Core i7 7700HQ,128,1024,SSD,HDD,Nvidia,GeForce GTX 1050 +HP,ENVY -,Notebook,13.3,8,Windows 10,1.34,1189.0,Full HD,1920,1080,No,Yes,No,Intel,2.5,Core i5 7200U,256,0,SSD,No,Intel,HD Graphics 620 +Dell,Vostro 3568,Notebook,15.6,4,Windows 10,2.18,547.0,Standard,1366,768,No,No,No,Intel,2.4,Core i3 7100U,128,0,SSD,No,Intel,HD Graphics 620 +HP,Probook 440,Notebook,14.0,4,Windows 10,1.64,779.0,Standard,1366,768,No,No,No,Intel,2.5,Core i5 7200U,500,0,HDD,No,Intel,HD Graphics 620 +Toshiba,Portege Z30-C-16H,Notebook,13.3,4,Windows 10,1.2,1195.0,Full HD,1920,1080,No,No,No,Intel,2.3,Core i5 6200U,128,0,SSD,No,Intel,HD Graphics 520 +HP,EliteBook 840,Notebook,14.0,4,Windows 10,1.48,1099.99,Standard,1366,768,No,No,No,Intel,2.4,Core i5 6300U,256,0,SSD,No,Intel,HD Graphics 520 +HP,ProBook 640,Notebook,14.0,4,Windows 10,1.95,1205.0,Full HD,1920,1080,No,No,No,Intel,2.5,Core i5 7200U,256,0,SSD,No,Intel,HD Graphics 620 +HP,EliteBook 1040,Ultrabook,14.0,8,Windows 7,1.43,1449.0,Full HD,1920,1080,No,No,No,Intel,2.6,Core i7 6600U,256,0,SSD,No,Intel,HD Graphics 520 +HP,ProBook 440,Notebook,14.0,8,Windows 10,1.64,1049.26,Full HD,1920,1080,No,No,No,Intel,2.5,Core i5 7200U,256,0,SSD,No,Nvidia,GeForce 930MX +HP,Probook 440,Notebook,14.0,4,Windows 10,1.64,684.0,Standard,1366,768,No,No,No,Intel,2.4,Core i3 7100U,500,0,HDD,No,Intel,HD Graphics 620 +Dell,Inspiron 7567,Gaming,15.6,8,Windows 10,2.65,949.0,Full HD,1920,1080,No,No,No,Intel,2.5,Core i5 7300HQ,1024,0,Hybrid,No,Nvidia,GeForce GTX 1050 +HP,EliteBook 820,Ultrabook,12.5,4,Windows 10,1.26,1539.0,Full HD,1920,1080,No,No,No,Intel,2.5,Core i5 7200U,500,0,HDD,No,Intel,HD Graphics 620 +HP,Elitebook 840,Notebook,14.0,4,Windows 10,1.48,1590.0,Full HD,1920,1080,No,No,No,Intel,2.5,Core i5 7200U,256,0,SSD,No,Intel,HD Graphics 620 +HP,EliteBook 840,Ultrabook,14.0,8,Windows 10,1.54,1887.21,Full HD,1920,1080,No,No,No,Intel,2.5,Core i7 6500U,256,0,SSD,No,Intel,HD Graphics 520 +HP,Probook 430,Notebook,13.3,4,Windows 10,1.49,800.0,Standard,1366,768,No,No,No,Intel,2.4,Core i3 7100U,500,0,HDD,No,Intel,HD Graphics 620 +Toshiba,Portege A30-C-1CZ,Notebook,13.3,8,Windows 10,1.5,1210.0,Standard,1366,768,No,No,No,Intel,2.3,Core i5 6200U,256,0,SSD,No,Intel,HD Graphics 520 +HP,ProBook 450,Notebook,15.6,4,Windows 10,2.04,769.99,Standard,1366,768,No,No,No,Intel,2.4,Core i3 7100U,256,0,SSD,No,Intel,HD Graphics 620 +Lenovo,ThinkPad P70,Notebook,17.3,16,Windows 7,2.4,2968.0,4K Ultra HD,3840,2160,No,Yes,No,Intel,2.7,Core i7 6820HQ,512,0,SSD,No,Nvidia,Quadro 3000M +Toshiba,Tecra Z40-C-12Z,Notebook,14.0,8,Windows 10,1.47,1490.0,Full HD,1920,1080,No,Yes,No,Intel,2.3,Core i5 6200U,256,0,SSD,No,Intel,HD Graphics 520 +HP,EliteBook 1040,Notebook,14.0,8,Windows 10,1.43,2229.0,Full HD,1920,1080,No,No,No,Intel,2.5,Core i7 6500U,256,0,SSD,No,Intel,HD Graphics 520 +Dell,Inspiron 5568,2 in 1 Convertible,15.6,4,Windows 10,2.08,795.99,Full HD,1920,1080,Yes,Yes,No,Intel,2.3,Core i3 6100U,1024,0,HDD,No,Intel,HD Graphics 520 +Toshiba,Portégé Z30-C-16K,Ultrabook,13.3,8,Windows 10,1.2,1590.0,Full HD,1920,1080,No,No,No,Intel,2.3,Core i5 6200U,256,0,SSD,No,Intel,HD Graphics 520 +HP,Spectre 13-V100nv,Notebook,13.3,8,Windows 10,1.11,1149.0,Full HD,1920,1080,No,Yes,No,Intel,2.5,Core i5 7200U,256,0,SSD,No,Intel,HD Graphics 620 +HP,ProBook 440,Notebook,14.0,8,Windows 10,1.64,1185.43,Full HD,1920,1080,No,No,No,Intel,2.7,Core i7 7500U,256,0,SSD,No,Nvidia,GeForce 930MX +Dell,Latitude E5570,Notebook,15.6,8,Windows 10,2.09,1046.44,Full HD,1920,1080,No,No,No,Intel,2.4,Core i5 6300U,500,0,HDD,No,Intel,HD Graphics 520 +HP,Elitebook 820,Ultrabook,12.5,4,Windows 10,1.26,1559.0,Standard,1366,768,No,No,No,Intel,2.5,Core i5 7200U,256,0,SSD,No,Intel,HD Graphics 620 +HP,ProBook 650,Notebook,14.0,4,Windows 10,2.31,1189.0,Standard,1366,768,No,No,No,Intel,2.5,Core i5 7200U,500,0,HDD,No,Intel,HD Graphics 620 +HP,ProBook 640,Notebook,14.0,4,Windows 10,1.95,1060.0,Standard,1366,768,No,No,No,Intel,2.5,Core i5 7200U,500,0,HDD,No,Intel,HD Graphics 620 +Dell,XPS 13,Ultrabook,13.3,8,Windows 10,1.29,1624.0,Quad HD+,3200,1800,Yes,No,No,Intel,2.5,Core i5 7200U,256,0,SSD,No,Intel,HD Graphics 620 +HP,Probook 470,Notebook,17.3,8,Windows 10,2.63,1080.0,Full HD,1920,1080,No,No,No,Intel,2.5,Core i5 7200U,256,0,SSD,No,Nvidia,GeForce 930MX +HP,ProBook 440,Notebook,14.0,4,Windows 10,1.64,973.0,Standard,1366,768,No,No,No,Intel,2.5,Core i5 7200U,256,0,SSD,No,Intel,HD Graphics 620 +Acer,Aspire 3,Notebook,15.6,6,Windows 10,2.1,409.0,Standard,1366,768,No,No,No,AMD,3.0,A9-Series 9420,1024,0,HDD,No,AMD,Radeon R5 +MSI,GL72M 7RDX,Gaming,17.3,8,Windows 10,2.7,1191.8,Full HD,1920,1080,No,No,No,Intel,2.8,Core i7 7700HQ,128,1024,SSD,HDD,Nvidia,GeForce GTX 1050 +HP,Probook 640,Notebook,14.0,8,Windows 7,1.95,1195.0,Full HD,1920,1080,No,No,No,Intel,2.3,Core i5 6200U,256,0,SSD,No,Intel,HD Graphics 520 +HP,EliteBook 850,Notebook,15.6,8,Windows 10,1.84,1228.99,Full HD,1920,1080,No,No,No,Intel,2.5,Core i7 6500U,256,0,SSD,No,Intel,HD Graphics 520 +HP,EliteBook 820,Ultrabook,12.5,8,Windows 10,1.26,1349.0,Full HD,1920,1080,No,No,No,Intel,2.5,Core i7 6500U,256,0,SSD,No,Intel,HD Graphics 520 +HP,ProBook 450,Notebook,15.6,4,Windows 10,2.04,742.0,Standard,1366,768,No,No,No,Intel,2.5,Core i5 7200U,500,0,HDD,No,Intel,HD Graphics 620 +Toshiba,Tecra Z40-C-136,Ultrabook,14.0,8,Windows 10,1.47,1725.0,Full HD,1920,1080,No,Yes,No,Intel,2.6,Core i7 6600U,256,0,SSD,No,Intel,HD Graphics 520 +Dell,Latitude E5570,Notebook,15.6,8,Windows 7,2.09,1062.95,Full HD,1920,1080,No,No,No,Intel,2.4,Core i5 6300U,256,0,SSD,No,Intel,HD Graphics 520 +HP,ProBook 440,Notebook,14.0,8,Windows 10,1.64,1010.51,Full HD,1920,1080,No,No,No,Intel,2.5,Core i5 7200U,256,0,SSD,No,Intel,HD Graphics 620 +Lenovo,Yoga 500-15ISK,2 in 1 Convertible,15.6,4,Windows 10,1.8,847.0,Full HD,1920,1080,Yes,Yes,No,Intel,2.5,Core i7 6500U,256,0,SSD,No,Intel,HD Graphics 520 +Vero,V142 (X5-Z8350/2GB/32GB/W10),Notebook,14.0,2,Windows 10,1.45,210.8,Standard,1366,768,No,No,No,Intel,1.44,Atom X5-Z8350,32,0,Flash Storage,No,Intel,HD Graphics 400 +Toshiba,Tecra A50-C-218,Notebook,15.6,16,Windows 10,2.4,1425.0,Full HD,1920,1080,No,Yes,No,Intel,2.5,Core i7 6500U,256,0,SSD,No,Nvidia,GeForce 930M +Lenovo,Thinkpad L560,Notebook,15.6,8,Windows 10,2.3,1049.6,Full HD,1920,1080,No,No,No,Intel,2.3,Core i5 6200U,256,0,SSD,No,Intel,HD Graphics 520 +HP,EliteBook 840,Notebook,14.0,4,Windows 10,1.54,1000.0,Full HD,1920,1080,No,No,No,Intel,2.3,Core i5 6200U,500,0,HDD,No,Intel,HD Graphics 520 +HP,EliteBook 850,Notebook,15.6,8,Windows 10,1.84,2103.34,Full HD,1920,1080,No,No,No,Intel,2.4,Core i5 6300U,256,500,SSD,HDD,Intel,HD Graphics 520 +HP,EliteBook 1040,Notebook,14.0,8,Windows 7,1.43,1469.0,Full HD,1920,1080,No,No,No,Intel,2.3,Core i5 6200U,256,0,SSD,No,Intel,HD Graphics 520 +MSI,GT72S Dominator,Gaming,17.3,16,Windows 10,3.78,1545.64,Full HD,1920,1080,No,Yes,No,Intel,2.7,Core i7 6820HK,256,1024,SSD,HDD,Nvidia,GeForce GTX 980M +Lenovo,IdeaPad Y900-17ISK,Gaming,17.3,16,Windows 10,4.6,2289.99,Full HD,1920,1080,No,Yes,No,Intel,2.6,Core i7 6700HQ,128,1024,SSD,HDD,Nvidia,GeForce GTX 980M +Asus,Chromebook C202SA,Netbook,11.6,4,Chrome OS,1.2,287.9,Standard,1366,768,No,No,No,Intel,1.6,Celeron Dual Core N3060,16,0,Flash Storage,No,Intel,HD Graphics 400 +Lenovo,ThinkPad X1,Notebook,14.0,16,Windows 7,1.1,2620.0,Standard,2560,1440,No,Yes,No,Intel,2.6,Core i7 6600U,256,0,SSD,No,Intel,HD Graphics 520 +HP,Noteb Pav,Notebook,15.6,8,Windows 10,1.91,979.0,Full HD,1920,1080,No,Yes,No,Intel,2.7,Core i7 7500U,1024,0,HDD,No,Nvidia,GeForce 940MX +Dell,Inspiron 5578,2 in 1 Convertible,15.6,8,Windows 10,2.3,1094.0,Full HD,1920,1080,Yes,Yes,No,Intel,2.7,Core i5 7200U,256,0,SSD,No,Intel,HD Graphics 620 +HP,ProBook 450,Notebook,15.6,4,Windows 10,2.04,979.0,Standard,1366,768,No,No,No,Intel,2.5,Core i5 7200U,256,0,SSD,No,Intel,HD Graphics 620 +Dell,XPS 13,Ultrabook,13.3,16,Windows 10,1.2,2254.0,Quad HD+,3200,1800,Yes,No,No,Intel,2.7,Core i7 7500U,1024,0,SSD,No,Intel,HD Graphics 620 +HP,ProBook 650,Notebook,15.6,4,Windows 10,2.31,705.15,Standard,1366,768,No,No,No,Intel,2.3,Core i3 6100U,500,0,HDD,No,Intel,HD Graphics 520 +HP,250 G5,Notebook,15.6,4,No OS,1.96,499.0,Standard,1366,768,No,No,No,Intel,2.5,Core i5 7200U,500,0,HDD,No,Intel,HD Graphics 620 +Acer,Aspire ES1-523,Notebook,15.6,8,Windows 10,2.4,449.0,Standard,1366,768,No,No,No,AMD,2.2,A8-Series 7410,1024,0,HDD,No,AMD,Radeon R5 +Dell,Inspiron 7378,2 in 1 Convertible,13.3,12,Windows 10,1.6,1299.0,Full HD,1920,1080,Yes,Yes,No,Intel,2.7,Core i7 7500U,256,0,SSD,No,Intel,HD Graphics 620 +MSI,GT62VR 6RD,Gaming,15.6,16,Windows 10,2.94,1819.0,Full HD,1920,1080,No,No,No,Intel,2.6,Core i7 6700HQ,256,1024,SSD,HDD,Nvidia,GeForce GTX 1060 +HP,ProBook 450,Notebook,15.6,8,Windows 10,2.04,1070.0,Full HD,1920,1080,No,No,No,Intel,2.7,Core i7 7500U,256,0,SSD,No,Intel,HD Graphics 620 +Asus,Rog G752VL-GC088D,Gaming,17.3,16,No OS,4.0,998.0,Full HD,1920,1080,No,Yes,No,Intel,2.6,Core i7 6700HQ,1024,0,HDD,No,Nvidia,GeForce GTX 965M +Dell,Inspiron 3567,Notebook,15.6,4,Windows 10,2.25,559.0,Full HD,1920,1080,No,No,No,Intel,2.5,Core i5 7200U,1024,0,HDD,No,Intel,HD Graphics +Dell,Inspiron 5567,Notebook,15.6,16,Windows 10,2.32,989.99,Full HD,1920,1080,No,No,No,Intel,2.7,Core i7 7500U,2048,0,HDD,No,AMD,Radeon R7 M445 +MSI,GS63VR 6RF,Gaming,15.6,16,Windows 10,1.8,1929.0,Full HD,1920,1080,No,No,No,Intel,2.6,Core i7 6700HQ,256,1024,SSD,HDD,Nvidia,GeForce GTX 1060 +Dell,XPS 13,Ultrabook,13.3,8,Windows 10,1.29,1458.0,Full HD,1920,1080,No,No,No,Intel,2.7,Core i7 7500U,256,0,SSD,No,Intel,HD Graphics 620 +Asus,ROG G701VO,Gaming,17.3,64,Windows 10,3.58,3975.0,Full HD,1920,1080,No,Yes,No,Intel,2.7,Core i7 6820HK,1024,0,SSD,No,Nvidia,GeForce GTX 980 +Dell,Inspiron 5368,2 in 1 Convertible,13.3,8,Windows 10,1.62,798.01,Full HD,1920,1080,Yes,No,No,Intel,2.5,Core i7 6500U,256,0,SSD,No,Intel,HD Graphics 520 +Dell,Alienware 15,Gaming,15.6,16,Windows 10,3.21,1329.0,4K Ultra HD,3840,2160,No,No,No,Intel,2.6,Core i7 6700HQ,256,1024,SSD,HDD,Nvidia,GeForce GTX 970M +Apple,"MacBook 12""",Ultrabook,12.0,8,Mac OS X,0.92,1300.0,Standard,2304,1440,No,Yes,Yes,Intel,1.1,Core M,256,0,Flash Storage,No,Intel,HD Graphics 515 +Dell,Latitude 3570,Notebook,15.6,4,Windows 10,2.06,481.98,Standard,1366,768,No,No,No,Intel,2.3,Core i3 6100U,500,0,HDD,No,Intel,HD Graphics 520 +HP,ProBook 650,Notebook,15.6,4,Windows 10,2.31,1199.0,Standard,1366,768,No,No,No,Intel,2.3,Core i5 6200U,500,0,HDD,No,Intel,HD Graphics 520 +HP,EliteBook 820,Ultrabook,12.5,8,Windows 7,1.26,1199.0,Full HD,1920,1080,No,No,No,Intel,2.3,Core i5 6200U,256,0,SSD,No,Intel,HD Graphics 520 +HP,ProBook 430,Notebook,13.3,8,Windows 10,1.49,1090.0,Full HD,1920,1080,No,No,No,Intel,2.7,Core i7 7500U,256,0,SSD,No,Intel,HD Graphics 620 +Lenovo,ThinkPad Yoga,Ultrabook,12.5,8,Windows 10,1.3,1713.49,Full HD,1920,1080,Yes,Yes,No,Intel,2.5,Core i7 6500U,256,0,SSD,No,Intel,HD Graphics 520 +Lenovo,IdeaPad 300-17ISK,Notebook,17.3,8,Windows 10,3.0,659.0,Standard,1600,900,No,No,No,Intel,2.3,Core i5 6200U,1024,0,HDD,No,AMD,Radeon R5 M330 +Lenovo,Ideapad 700-15ISK,Notebook,15.6,4,Windows 10,2.3,977.0,Full HD,1920,1080,No,Yes,No,Intel,2.3,Core i5 6300HQ,1024,0,HDD,No,Nvidia,GeForce GTX 950M +MSI,GT72VR Dominator,Gaming,17.3,16,Windows 10,3.78,2499.0,Full HD,1920,1080,No,No,No,Intel,2.8,Core i7 7700HQ,256,1024,SSD,HDD,Nvidia,GeForce GTX 1070 +Lenovo,V110-15ISK (i5-6200U/4GB/500GB/W10),Notebook,15.6,4,Windows 10,2.1,540.0,Standard,1366,768,No,No,No,Intel,2.3,Core i5 6200U,500,0,HDD,No,Intel,HD Graphics 520 +HP,Probook 650,Notebook,15.6,4,Windows 7,2.31,940.0,Full HD,1920,1080,No,No,No,Intel,2.3,Core i5 6200U,500,0,HDD,No,Intel,HD Graphics 520 +Lenovo,Yoga 900S-12ISK,Ultrabook,12.5,8,Windows 10,0.99,1399.0,Standard,2560,1440,Yes,Yes,No,Intel,1.2,Core M 6Y75,512,0,SSD,No,Intel,HD Graphics 515 +Lenovo,IdeaPad Y900-17ISK,Gaming,17.3,32,Windows 10,4.6,3240.0,Full HD,1920,1080,No,Yes,No,Intel,2.7,Core i7 6820HK,512,1024,SSD,Hybrid,Nvidia,GeForce GTX 980M +Lenovo,Yoga Book,2 in 1 Convertible,10.1,4,Windows 10,0.69,646.27,Standard,1920,1200,Yes,Yes,No,Intel,1.44,Atom x5-Z8550,64,0,Flash Storage,No,Intel,HD Graphics 400 +HP,Spectre x360,Ultrabook,13.3,16,Windows 10,1.3,2049.0,4K Ultra HD,3840,2160,No,Yes,No,Intel,2.7,Core i7 7500U,512,0,SSD,No,Intel,HD Graphics 620 +Dell,Vostro 3568,Notebook,15.6,8,Windows 10,2.18,750.0,Full HD,1920,1080,No,No,No,Intel,2.5,Core i5 7200U,256,0,SSD,No,Intel,HD Graphics 620 +HP,EliteBook 840,Notebook,14.0,4,Windows 7,1.54,1030.99,Full HD,1920,1080,No,No,No,Intel,2.3,Core i5 6200U,500,0,HDD,No,Intel,HD Graphics 520 +HP,ZBook 15u,Workstation,15.6,8,Windows 7,1.9,1495.0,Full HD,1920,1080,No,No,No,Intel,2.5,Core i7 6500U,256,0,SSD,No,AMD,FirePro W4190M +Lenovo,ThinkPad T460,Notebook,14.0,8,Windows 7,1.7,1199.0,Full HD,1920,1080,No,No,No,Intel,2.3,Core i5 6200U,180,0,SSD,No,Intel,HD Graphics 520 +HP,Chromebook 13,Notebook,13.3,4,Chrome OS,1.29,615.0,Quad HD+,3200,1800,No,No,No,Intel,1.5,Pentium Dual Core 4405Y,32,0,Flash Storage,No,Intel,HD Graphics 515 +Acer,Aspire ES1-523,Notebook,15.6,4,Windows 10,2.4,387.0,Standard,1366,768,No,No,No,AMD,2.2,A8-Series 7410,500,0,HDD,No,AMD,Radeon R5 +Dell,Inspiron 3552,Notebook,15.6,4,Linux,2.2,393.49,Standard,1366,768,No,No,No,Intel,1.6,Pentium Quad Core N3700,500,0,HDD,No,Intel,HD Graphics +HP,250 G6,Notebook,15.6,4,No OS,1.86,345.99,Standard,1366,768,No,No,No,Intel,2.0,Core i3 6006U,1024,0,HDD,No,Intel,HD Graphics 520 +Asus,Rog GL702VM-GC354T,Gaming,17.3,8,Windows 10,2.7,1599.0,Full HD,1920,1080,No,Yes,No,Intel,2.8,Core i7 7700HQ,256,1024,SSD,HDD,Nvidia,GeForce GTX 1060 +Dell,Inspiron 5370,Ultrabook,13.3,4,Windows 10,1.4,818.35,Full HD,1920,1080,No,Yes,No,Intel,1.6,Core i5 8250U,256,0,SSD,No,AMD,Radeon 530 +HP,Elitebook 820,Netbook,12.5,4,Windows 7,2.4,1599.0,Standard,1366,768,No,No,No,Intel,2.3,Core i5 6200U,128,0,SSD,No,Intel,HD Graphics 520 +Acer,Aspire F5-573G,Notebook,15.6,8,Windows 10,2.4,799.0,Full HD,1920,1080,No,No,No,Intel,2.5,Core i5 7200U,256,1024,SSD,HDD,Nvidia,GeForce GTX 950M +Dell,Inspiron 5567,Notebook,15.6,8,Windows 10,2.36,638.8,Full HD,1920,1080,No,No,No,Intel,2.5,Core i5 7200U,1024,0,HDD,No,AMD,Radeon R7 M445 +MSI,GS70 Stealth,Gaming,17.3,8,Windows 10,2.6,1599.0,Full HD,1920,1080,No,No,No,Intel,2.6,Core i7 6700HQ,256,0,SSD,No,Nvidia,GeForce GTX 965M +HP,250 G5,Notebook,15.6,4,Windows 10,1.96,500.0,Standard,1366,768,No,No,No,Intel,1.6,Pentium Quad Core N3710,1024,0,HDD,No,Intel,HD Graphics 405 +Asus,G752VY-GC162T (i7-6700HQ/16GB/1TB,Gaming,17.3,16,Windows 10,4.3,2299.0,Full HD,1920,1080,No,Yes,No,Intel,2.6,Core i7 6700HQ,128,1024,SSD,HDD,Nvidia,GeForce GTX 980M +Dell,Latitude E5270,Ultrabook,12.5,4,Windows 7,1.5,1135.15,Standard,1366,768,No,No,No,Intel,2.3,Core i3 6100U,500,0,HDD,No,Intel,HD Graphics 520 +Dell,Latitude E5270,Ultrabook,12.5,4,Windows 7,1.5,1166.97,Standard,1366,768,No,No,No,Intel,2.3,Core i3 6100U,128,0,SSD,No,Intel,HD Graphics 520 +Acer,Chromebook 15,Notebook,15.6,4,Chrome OS,2.2,209.0,Standard,1366,768,No,No,No,Intel,1.5,Celeron Dual Core 3205U,16,0,SSD,No,Intel,HD Graphics +HP,ZBook 17,Workstation,17.3,8,Windows 7,3.0,2899.0,Full HD,1920,1080,No,Yes,No,Intel,2.6,Core i7 6700HQ,1024,0,HDD,No,AMD,FirePro W6150M +Lenovo,Legion Y520-15IKBN,Gaming,15.6,16,Windows 10,2.4,1199.0,Full HD,1920,1080,No,No,No,Intel,2.8,Core i7 7700HQ,512,0,SSD,No,Nvidia,GeForce GTX 1050 Ti +Dell,Latitude E5270,Ultrabook,12.5,8,Windows 7,1.5,1413.1,Standard,1366,768,No,No,No,Intel,2.3,Core i5 6200U,256,0,SSD,No,Intel,HD Graphics 520 +MSI,GE72 Apache,Gaming,17.3,8,Windows 10,2.9,1511.19,Full HD,1920,1080,No,No,No,Intel,2.6,Core i7 6700HQ,128,1024,SSD,HDD,Nvidia,GeForce GTX 960M +Lenovo,Yoga 500-15ISK,2 in 1 Convertible,15.6,4,Windows 10,2.1,867.0,Full HD,1920,1080,Yes,Yes,No,Intel,2.3,Core i5 6200U,256,0,SSD,No,Intel,HD Graphics 520 +HP,15-bw011nv (A6-9220/4GB/1TB/FHD/W10),Notebook,15.6,4,Windows 10,2.1,398.0,Full HD,1920,1080,No,No,No,AMD,2.5,A6-Series 9220,1024,0,HDD,No,AMD,Radeon R4 +Asus,Rog GL552VW-CN470T,Gaming,15.6,16,Windows 10,2.59,1339.0,Full HD,1920,1080,No,Yes,No,Intel,2.6,Core i7 6700HQ,128,1024,SSD,HDD,Nvidia,GeForce GTX 960M +HP,EliteBook 1030,Notebook,13.3,8,Windows 10,1.16,1699.0,Quad HD+,3200,1800,Yes,No,No,Intel,1.1,Core M 6Y54,256,0,SSD,No,Intel,HD Graphics 515 +Dell,Vostro 3559,Notebook,15.6,4,Windows 7,2.24,769.15,Standard,1366,768,No,No,No,Intel,2.3,Core i5 6200U,500,0,HDD,No,AMD,Radeon R5 M315 +Lenovo,V110-15ISK (i3-6006U/4GB/128GB/W10),Notebook,15.6,4,Windows 10,2.1,429.0,Standard,1366,768,No,No,No,Intel,2.0,Core i3 6006U,128,0,SSD,No,Intel,HD Graphics 520 +HP,Spectre Pro,Ultrabook,13.3,8,Windows 10,1.16,1969.0,Full HD,1920,1080,No,No,No,Intel,2.5,Core i7 6500U,512,0,SSD,No,Intel,HD Graphics 520 +Lenovo,Yoga Book,2 in 1 Convertible,10.1,4,Android,0.69,549.0,Standard,1920,1200,Yes,Yes,No,Intel,1.44,Atom x5-Z8550,64,0,Flash Storage,No,Intel,HD Graphics 400 +Dell,XPS 13,Ultrabook,13.3,8,Windows 10,1.23,1379.0,Full HD,1920,1080,No,No,No,Intel,2.4,Core i7 7560U,256,0,SSD,No,Intel,Iris Plus Graphics 640 +Lenovo,IdeaPad Y900-17ISK,Gaming,17.3,16,Windows 10,4.6,2749.99,Full HD,1920,1080,No,Yes,No,Intel,2.7,Core i7 6820HK,256,1024,SSD,Hybrid,Nvidia,GeForce GTX 980M +Razer,Blade Stealth,Ultrabook,12.5,8,Windows 10,1.25,1029.0,4K Ultra HD,3840,2160,Yes,No,No,Intel,2.5,Core i7 6500U,256,0,SSD,No,Intel,HD Graphics 520 +Toshiba,Portege X30-D-10K,Ultrabook,13.3,16,Windows 10,1.05,2226.0,Full HD,1920,1080,No,No,No,Intel,2.7,Core i7 7500U,512,0,SSD,No,Intel,HD Graphics 620 +Asus,Rog GL752VW-T4308T,Gaming,17.3,8,Windows 10,3.52,1312.49,Full HD,1920,1080,No,No,No,Intel,2.6,Core i7 6700HQ,128,1024,SSD,HDD,Nvidia,GeForce GTX 960M +Vero,V131 (X5-Z8350/4GB/32GB/FHD/W10),Notebook,13.3,4,Windows 10,1.35,196.0,Full HD,1920,1080,No,No,No,Intel,1.44,Atom X5-Z8350,32,0,Flash Storage,No,Intel,HD Graphics 400 +HP,Spectre Pro,Notebook,13.3,8,Windows 10,1.16,1690.0,Full HD,1920,1080,No,No,No,Intel,2.3,Core i5 6200U,256,0,SSD,No,Intel,HD Graphics 520 +HP,EliteBook 1040,Notebook,14.0,8,Windows 7,1.43,1513.0,Full HD,1920,1080,No,No,No,Intel,2.3,Core i5 6200U,256,0,SSD,No,Intel,HD Graphics 520 +Dell,Latitude E5570,Notebook,15.6,4,Linux,2.09,523.63,Standard,1366,768,No,No,No,Intel,2.3,Core i5 6200U,500,0,HDD,No,Intel,HD Graphics 520 +Asus,VivoBook Max,Notebook,15.6,4,Windows 10,2.0,435.0,Standard,1366,768,No,No,No,Intel,2.4,Core i3 7100U,1024,0,HDD,No,Intel,HD Graphics 620 +Lenovo,ThinkPad Yoga,2 in 1 Convertible,14.0,8,Windows 10,1.8,1669.0,Full HD,1920,1080,Yes,Yes,No,Intel,2.5,Core i7 6500U,256,0,SSD,No,Intel,HD Graphics 520 +Lenovo,Yoga Book,2 in 1 Convertible,10.1,4,Windows 10,0.69,479.0,Standard,1920,1200,Yes,Yes,No,Intel,1.44,Atom x5-Z8550,64,0,Flash Storage,No,Intel,HD Graphics 400 +HP,EliteBook 820,Ultrabook,12.5,8,Windows 7,1.26,1895.0,Standard,1366,768,No,No,No,Intel,2.4,Core i5 6300U,256,0,SSD,No,Intel,HD Graphics 520 +Lenovo,Legion Y520-15IKBN,Gaming,15.6,8,No OS,2.4,989.0,Full HD,1920,1080,No,Yes,No,Intel,2.5,Core i5 7300HQ,128,1024,SSD,HDD,Nvidia,GeForce GTX 1060 +HP,Omen -,Gaming,17.3,8,Windows 10,3.35,1129.0,Full HD,1920,1080,No,Yes,No,Intel,2.3,Core i5 6300HQ,128,1024,SSD,HDD,Nvidia,GeForce GTX 1060 +HP,15-bs078cl (i7-7500U/8GB/2TB/W10),Notebook,15.6,8,Windows 10,2.04,629.0,Standard,1366,768,No,No,No,Intel,2.7,Core i7 7500U,2048,0,HDD,No,Intel,HD Graphics 620 +Lenovo,ThinkPad P40,2 in 1 Convertible,14.0,8,Windows 7,1.8,2050.38,Full HD,1920,1080,Yes,Yes,No,Intel,2.6,Core i7 6600U,512,0,SSD,No,Nvidia,Quadro M500M +Asus,L403NA-GA013TS (N3350/4GB/32GB/W10),Notebook,14.0,4,Windows 10,1.5,278.0,Standard,1366,768,No,No,No,Intel,1.1,Celeron Dual Core N3350,32,0,Flash Storage,No,Intel,HD Graphics 500 +HP,250 G6,Ultrabook,15.6,8,Windows 10,1.84,752.0,Full HD,1920,1080,No,No,No,Intel,2.7,Core i7 7500U,256,0,SSD,No,Intel,HD Graphics 620 +Acer,Aspire E5-576G,Notebook,15.6,4,Windows 10,2.23,616.0,Full HD,1920,1080,No,No,No,Intel,2.5,Core i5 7200U,1024,0,HDD,No,Nvidia,GeForce 940MX +Lenovo,IdeaPad 500-15ISK,Notebook,15.6,16,Windows 10,2.5,1099.0,Full HD,1920,1080,No,No,No,Intel,2.5,Core i7 6500U,1024,0,Hybrid,No,AMD,Radeon R7 M360 +HP,ZBook 17,Workstation,17.3,8,Windows 7,3.0,3949.4,Full HD,1920,1080,No,Yes,No,Intel,2.6,Core i7 6700HQ,256,0,SSD,No,Nvidia,Quadro M3000M +Dell,Inspiron 5567,Notebook,15.6,8,Windows 10,2.5,784.0,Standard,1366,768,No,No,No,Intel,2.5,Core i5 7200U,1024,0,HDD,No,AMD,Radeon R7 M445 +MSI,GT72S Dominator,Gaming,17.3,16,Windows 10,3.78,2399.0,Full HD,1920,1080,No,No,No,Intel,2.7,Core i7 6820HQ,256,1024,SSD,HDD,Nvidia,GeForce GTX 980M +HP,EliteBook 850,Ultrabook,15.6,8,Windows 7,1.88,2171.72,Full HD,1920,1080,No,No,No,Intel,2.5,Core i7 6500U,256,0,SSD,No,Intel,HD Graphics 520 +Lenovo,ThinkPad X1,2 in 1 Convertible,14.0,16,Windows 10,2.8,2440.0,Standard,2560,1440,Yes,Yes,No,Intel,2.6,Core i7 6600U,512,0,SSD,No,Intel,HD Graphics 520 +MSI,GP62M 7RDX,Gaming,15.6,8,Windows 10,2.4,1142.8,Full HD,1920,1080,No,No,No,Intel,2.8,Core i7 7700HQ,128,1024,SSD,HDD,Nvidia,GeForce GTX 1050 +HP,Spectre Pro,2 in 1 Convertible,13.3,8,Windows 10,1.48,1629.0,Full HD,1920,1080,Yes,No,No,Intel,2.4,Core i5 6300U,256,0,SSD,No,Intel,HD Graphics 520 +HP,ZBook 15,Workstation,15.6,8,Windows 7,2.59,2229.0,Full HD,1920,1080,No,Yes,No,Intel,2.6,Core i7 6700HQ,256,0,SSD,No,Nvidia,Quadro M1000M +HP,Spectre Pro,2 in 1 Convertible,13.3,8,Windows 10,1.48,1799.0,Standard,2560,1440,Yes,No,No,Intel,2.6,Core i7 6600U,256,0,SSD,No,Intel,HD Graphics 520 +HP,ZBook Studio,Workstation,15.6,8,Windows 7,2.0,1899.0,Full HD,1920,1080,No,No,No,Intel,2.6,Core i7 6700HQ,256,0,SSD,No,Nvidia,Quadro M1000M +HP,EliteBook 820,Ultrabook,12.5,8,Windows 7,1.26,2296.95,Full HD,1920,1080,No,No,No,Intel,2.5,Core i7 6500U,256,0,SSD,No,Intel,HD Graphics 520 +Dell,Vostro 5568,Notebook,15.6,8,Windows 10,2.18,1009.9,Full HD,1920,1080,No,No,No,Intel,2.7,Core i7 7500U,256,0,SSD,No,Nvidia,GeForce 940MX +HP,EliteBook 850,Notebook,15.6,8,Windows 7,1.88,1579.0,Full HD,1920,1080,No,No,No,Intel,2.3,Core i5 6200U,256,0,SSD,No,Intel,HD Graphics 520 +Lenovo,ThinkPad X1,2 in 1 Convertible,14.0,8,Windows 10,1.27,2339.0,Standard,2560,1440,Yes,Yes,No,Intel,2.5,Core i7 6500U,256,0,SSD,No,Intel,HD Graphics 520 +Lenovo,V110-15ISK (i3-6006U/4GB/1TB/No,Notebook,15.6,4,No OS,1.9,339.0,Standard,1366,768,No,No,No,Intel,2.0,Core i3 6006U,1024,0,HDD,No,Intel,HD Graphics 520 +HP,15-BA015wm (E2-7110/4GB/500GB/W10),Notebook,15.6,4,Windows 10,1.86,297.0,Standard,1366,768,No,No,No,AMD,1.8,E-Series 7110,500,0,HDD,No,AMD,Radeon R2 Graphics +Lenovo,B51-80 (i5-6200U/8GB/1TB/Radeon,Notebook,15.6,8,No OS,2.32,599.0,Full HD,1920,1080,No,No,No,Intel,2.3,Core i5 6200U,1024,0,HDD,No,AMD,Radeon R5 M330 +Dell,Inspiron 7567,Gaming,15.6,8,Windows 10,2.62,1199.0,Full HD,1920,1080,No,No,No,Intel,2.8,Core i7 7700HQ,1024,0,HDD,No,Nvidia,GeForce GTX 1050Ti +Dell,XPS 15,Notebook,15.6,8,Windows 10,2.04,2250.68,4K Ultra HD,3840,2160,Yes,Yes,No,Intel,2.3,Core i5 6300HQ,256,0,SSD,No,Nvidia,GeForce 960M +HP,15-bw002nv (A6-9220/4GB/256GB/Radeon,Notebook,15.6,4,Windows 10,1.91,478.89,Full HD,1920,1080,No,No,No,AMD,2.5,A6-Series A6-9220,256,0,SSD,No,AMD,Radeon 520 +MSI,GP72M 7REX,Gaming,17.3,16,Windows 10,2.7,1492.8,Full HD,1920,1080,No,No,No,Intel,2.8,Core i7 7700HQ,256,1024,SSD,HDD,Nvidia,GeForce GTX 1050 Ti +Lenovo,ThinkPad T460s,Ultrabook,14.0,12,Windows 7,1.4,2299.0,Full HD,1920,1080,No,No,No,Intel,2.6,Core i7 6600U,512,0,SSD,No,Intel,HD Graphics 520 +Lenovo,B51-80 (i5-6200U/8GB/1008GB/Radeon,Notebook,15.6,8,Windows 10,2.5,788.49,Full HD,1920,1080,No,No,No,Intel,2.3,Core i5 6200U,1024,0,Hybrid,No,AMD,Radeon R5 M330 +HP,Spectre Pro,2 in 1 Convertible,13.3,8,Windows 10,1.48,2041.0,Standard,2560,1440,Yes,No,No,Intel,2.6,Core i7 6600U,512,0,SSD,No,Intel,HD Graphics 520 +Lenovo,ThinkPad T460,Ultrabook,14.0,8,Windows 7,1.7,1499.0,Full HD,1920,1080,No,No,No,Intel,2.6,Core i7 6600U,256,0,SSD,No,Intel,HD Graphics 520 +MSI,GS40 Phantom,Gaming,14.0,16,Windows 10,1.7,1769.0,Full HD,1920,1080,No,No,No,Intel,2.6,Core i7 6700HQ,256,1024,SSD,HDD,Nvidia,GeForce GTX 970M +HP,Pavilion 15-cb003nv,Gaming,15.6,8,Windows 10,2.62,899.0,Full HD,1920,1080,No,Yes,No,Intel,2.8,Core i7 7700HQ,1024,0,HDD,No,Nvidia,GeForce GTX 1050 +Lenovo,IdeaPad 310-15ISK,Notebook,15.6,8,Windows 10,2.2,459.0,Standard,1366,768,No,No,No,Intel,2.0,Core i3 6006U,1024,0,HDD,No,Intel,HD Graphics 520 +HP,250 G4,Notebook,15.6,4,No OS,2.1,476.99,Standard,1366,768,No,No,No,Intel,2.3,Core i5 6200U,500,0,HDD,No,Intel,HD Graphics 520 +Dell,Inspiron 7567,Gaming,15.6,8,Windows 10,2.62,1498.0,4K Ultra HD,3840,2160,No,No,No,Intel,2.8,Core i7 7700HQ,128,1024,SSD,HDD,Nvidia,GeForce GTX 1050 Ti +Lenovo,ThinkPad T570,Notebook,15.6,8,Windows 10,1.95,1390.0,Full HD,1920,1080,No,Yes,No,Intel,2.5,Core i5 7200U,256,0,SSD,No,Intel,HD Graphics 620 +Lenovo,320-15ISK (i3-6006U/4GB/1TB/GeForce,Notebook,15.6,4,Windows 10,2.2,468.0,Full HD,1920,1080,No,No,No,Intel,2.0,Core i3 6006U,1024,0,HDD,No,Nvidia,GeForce 920MX +HP,Stream 14-AX000nv,Notebook,14.0,2,Windows 10,1.44,249.0,Standard,1366,768,No,No,No,Intel,1.6,Celeron Dual Core N3060,32,0,Flash Storage,No,Intel,HD Graphics 400 +MSI,PL60 7RD,Gaming,15.6,8,Windows 10,2.2,839.0,Full HD,1920,1080,No,Yes,No,Intel,2.7,Core i7 7500U,1024,0,HDD,No,Nvidia,GeForce GTX 1050 +HP,250 G5,Notebook,15.6,8,Windows 10,1.96,679.0,Full HD,1920,1080,No,No,No,Intel,2.5,Core i7 6500U,256,0,SSD,No,Intel,HD Graphics 520 +HP,ProBook 450,Notebook,15.6,16,Windows 10,2.1,1159.0,Full HD,1920,1080,No,No,No,Intel,1.8,Core i7 8550U,512,0,SSD,No,Intel,UHD Graphics 620 +Asus,X553SA-XX021T (N3050/4GB/500GB/W10),Notebook,15.6,4,Windows 10,2.2,369.0,Standard,1366,768,No,No,No,Intel,1.6,Celeron Dual Core N3050,500,0,HDD,No,Intel,HD Graphics +Lenovo,V110-15ISK (i5-6200U/4GB/500GB/No,Notebook,15.6,4,No OS,2.1,398.0,Standard,1366,768,No,No,No,Intel,2.3,Core i5 6200U,500,0,HDD,No,Intel,HD Graphics 520 +Lenovo,IdeaPad 510-15IKB,Notebook,15.6,8,No OS,2.2,709.0,Full HD,1920,1080,No,No,No,Intel,2.7,Core i7 7500U,1024,0,HDD,No,Nvidia,GeForce 940MX +Asus,UX410UA-GV097T (i3-7100U/4GB/256GB/FHD/W10),Notebook,14.0,4,Windows 10,2.0,769.0,Full HD,1920,1080,No,No,No,Intel,2.4,Core i3 7100U,256,0,SSD,No,Intel,HD Graphics 620 +Lenovo,B51-80 (i7-6500U/4GB/1008GB/FHD/W7),Notebook,15.6,4,Windows 7,2.32,825.0,Full HD,1920,1080,No,No,No,Intel,2.5,Core i7 6500U,1024,0,Hybrid,No,Intel,HD Graphics 520 +Lenovo,IdeaPad Y700-15ISK,Gaming,15.6,16,Windows 10,3.31,1305.0,Full HD,1920,1080,No,Yes,No,Intel,2.6,Core i7 6700HQ,512,0,SSD,No,Nvidia,GeForce GTX 960 +MSI,GS60 Ghost,Gaming,15.6,16,Windows 10,1.91,2153.37,Full HD,1920,1080,No,No,No,Intel,2.6,Core i7 6700HQ,128,1024,SSD,HDD,Nvidia,GeForce GTX 970M +HP,ProBook 450,Notebook,15.6,4,Windows 10,2.07,650.0,Standard,1366,768,No,No,No,Intel,2.3,Core i3 6100U,500,0,HDD,No,Intel,HD Graphics 520 +Lenovo,ThinkPad X1,2 in 1 Convertible,14.0,8,Windows 10,1.36,1637.0,Standard,2560,1440,Yes,Yes,No,Intel,2.3,Core i5 6200U,256,0,SSD,No,Intel,HD Graphics 520 +Lenovo,IdeaPad 310-15IKB,Ultrabook,15.6,6,Windows 10,1.54,831.0,Full HD,1920,1080,No,No,No,Intel,2.7,Core i7 7500U,256,0,SSD,No,Nvidia,GeForce 920M +Dell,Vostro 5568,Notebook,15.6,8,Linux,1.98,895.01,Full HD,1920,1080,No,No,No,Intel,2.7,Core i7 7500U,256,0,SSD,No,Nvidia,GeForce GT 940MX +Acer,Aspire 3,Notebook,15.6,4,Windows 10,2.1,333.0,Standard,1366,768,No,No,No,Intel,2.0,Celeron Dual Core N3350,500,0,HDD,No,Intel,HD Graphics 500 +HP,Pavilion 15-BC000nv,Notebook,15.6,6,Windows 10,2.18,799.0,Full HD,1920,1080,No,Yes,No,Intel,2.6,Core i7 6700HQ,1024,0,HDD,No,Nvidia,GeForce GTX 960M +Asus,Rog GL552VW-DM201T,Gaming,15.6,8,Windows 10,2.591,909.0,Full HD,1920,1080,No,Yes,No,Intel,2.6,Core i7 6700HQ,256,1024,SSD,HDD,Nvidia,GeForce GTX 960M +Dell,Inspiron 5578,2 in 1 Convertible,15.6,16,Windows 10,2.09,1179.0,Full HD,1920,1080,Yes,No,No,Intel,2.7,Core i7 7500U,512,0,SSD,No,Intel,HD Graphics 620 +Acer,Aspire E5-576G,Notebook,15.6,4,Windows 10,2.23,691.0,Full HD,1920,1080,No,No,No,Intel,2.5,Core i5 7200U,256,0,SSD,No,Nvidia,GeForce 940MX +Dell,XPS 13,Ultrabook,13.3,8,Linux,1.23,1099.0,Quad HD+,3200,1800,Yes,No,No,Intel,2.4,Core i5 6300U,256,0,SSD,No,Intel,HD Graphics 520 +Acer,Predator G9-793,Gaming,17.3,16,Windows 10,4.2,2599.0,Full HD,1920,1080,No,Yes,No,Intel,2.8,Core i7 7700HQ,256,1024,SSD,HDD,Nvidia,GeForce GTX 1070 +Lenovo,Legion Y520-15IKBN,Gaming,15.6,8,Windows 10,2.4,819.0,Full HD,1920,1080,No,Yes,No,Intel,2.5,Core i5 7300HQ,1024,0,HDD,No,Nvidia,GeForce GTX 1050 +Samsung,Chromebook Plus,2 in 1 Convertible,12.3,4,Chrome OS,1.15,659.0,Standard,2400,1600,Yes,Yes,No,Samsung,2.0,Cortex A72&A53,32,0,Flash Storage,No,ARM,Mali T860 MP4 +HP,250 G6,Notebook,15.6,4,Windows 10,1.86,485.0,Standard,1366,768,No,No,No,Intel,2.5,Core i5 7200U,500,0,HDD,No,Intel,HD Graphics 620 +Apple,"MacBook 12""",Ultrabook,12.0,8,Mac OS X,0.92,1163.0,Standard,2304,1440,No,Yes,Yes,Intel,1.1,Core M,256,0,Flash Storage,No,Intel,HD Graphics 5300 +Dell,Inspiron 7378,2 in 1 Convertible,13.3,8,Windows 10,1.6,1199.0,Full HD,1920,1080,Yes,Yes,No,Intel,2.5,Core i5 7200U,256,0,SSD,No,Intel,HD Graphics 620 +HP,Pavilion Power,Notebook,15.6,12,Windows 10,2.21,1327.0,Full HD,1920,1080,No,Yes,No,Intel,2.8,Core i7 7700HQ,128,1024,SSD,HDD,Nvidia,GeForce GTX 1050 +Lenovo,V110-15ISK (i3-6006U/4GB/1TB/Radeon,Notebook,15.6,4,No OS,1.9,368.0,Standard,1366,768,No,No,No,Intel,2.0,Core i3 6006U,1024,0,HDD,No,AMD,Radeon R5 M430 +Asus,Rog G752VY-GC229T,Gaming,17.3,16,Windows 10,4.3,2150.0,Full HD,1920,1080,No,Yes,No,Intel,2.6,Core i7 6700HQ,512,1024,SSD,HDD,Nvidia,GeForce GTX 980M +Acer,Aspire 3,Notebook,15.6,4,Linux,2.1,272.0,Standard,1366,768,No,No,No,Intel,2.0,Celeron Dual Core N3350,1024,0,HDD,No,Intel,HD Graphics 500 +MSI,GS73VR 7RF,Gaming,17.3,16,Windows 10,2.43,2048.9,Full HD,1920,1080,No,No,No,Intel,2.8,Core i7 7700HQ,256,1024,SSD,HDD,Nvidia,GeForce GTX 1060 +Dell,Inspiron 5567,Notebook,15.6,4,Windows 10,2.3,499.0,Standard,1366,768,No,No,No,Intel,2.0,Core i3 6006U,128,0,SSD,No,AMD,Radeon R7 M440 +Lenovo,IdeaPad 310-15ISK,Notebook,15.6,8,No OS,2.2,629.0,Standard,1366,768,No,No,No,Intel,2.5,Core i7 6500U,500,0,HDD,No,Nvidia,GeForce 920MX +Dell,Inspiron 5579,2 in 1 Convertible,15.6,16,Windows 10,2.0,1285.0,Full HD,1920,1080,Yes,No,No,Intel,1.8,Core i7 8550U,512,0,SSD,No,Intel,UHD Graphics 620 +Dell,XPS 13,Ultrabook,13.3,16,Windows 10,1.2,2680.0,Quad HD+,3200,1800,Yes,No,No,Intel,2.7,Core i7 7500U,512,0,SSD,No,Intel,HD Graphics 620 +Asus,FX502VM-DM105T (i7-6700HQ/8GB/1TB/GeForce,Gaming,15.6,8,Windows 10,2.2,1169.0,Full HD,1920,1080,No,No,No,Intel,2.6,Core i7 6700HQ,1024,0,HDD,No,Nvidia,GeForce GTX 1060 +Dell,Inspiron 5567,Notebook,15.6,8,Windows 10,2.36,889.0,Full HD,1920,1080,No,No,No,Intel,2.5,Core i5 7200U,256,0,SSD,No,AMD,Radeon R7 M445 +HP,15-bs025nv (i5-7200U/8GB/256GB/W10),Notebook,15.6,8,Windows 10,1.91,579.0,Standard,1366,768,No,No,No,Intel,2.5,Core i5 7200U,256,0,SSD,No,Intel,HD Graphics 620 +Lenovo,IdeaPad 320-15AST,Notebook,15.6,4,Windows 10,2.2,299.0,Standard,1366,768,No,No,No,AMD,2.2,E-Series 9000,500,0,HDD,No,AMD,Radeon R2 Graphics +Acer,Aspire E5-774G,Notebook,17.3,8,Windows 10,3.3,629.0,Standard,1600,900,No,No,No,Intel,2.0,Core i3 6006U,1024,0,HDD,No,Nvidia,GeForce 940MX +Asus,Rog Strix,Gaming,15.6,16,Windows 10,2.2,2449.0,Full HD,1920,1080,No,No,No,Intel,2.8,Core i7 7700HQ,256,1024,SSD,HDD,Nvidia,GeForce GTX 1070 +Apple,"MacBook 12""",Ultrabook,12.0,8,Mac OS X,0.92,1279.0,Standard,2304,1440,No,Yes,Yes,Intel,1.2,Core M,512,0,Flash Storage,No,Intel,HD Graphics 515 +Asus,FX502VM-AS73 (i7-7700HQ/16GB/1TB,Notebook,15.6,16,Windows 10,2.2,1749.0,Full HD,1920,1080,No,No,No,Intel,2.8,Core i7 7700HQ,128,1024,SSD,HDD,Nvidia,GeForce GTX 1060 +MSI,GS73VR Stealth,Gaming,17.3,16,Windows 10,2.43,1948.99,Full HD,1920,1080,No,Yes,No,Intel,2.6,Core i7 6700HQ,256,1024,SSD,HDD,Nvidia,GeForce GTX 1060 +Dell,Inspiron 7579,2 in 1 Convertible,15.6,8,Windows 10,2.191,999.0,Full HD,1920,1080,Yes,Yes,No,Intel,2.5,Core i5 7200U,256,0,SSD,No,Intel,HD Graphics 620 +Asus,ROG Strix,Gaming,17.3,16,Windows 10,2.9,1949.0,Full HD,1920,1080,No,No,No,Intel,2.8,Core i7 7700HQ,256,1024,SSD,HDD,Nvidia,GeForce GTX 1060 +Acer,C740-C9QX (3205U/2GB/32GB/Chrome,Netbook,11.6,2,Chrome OS,1.3,174.0,Standard,1366,768,No,No,No,Intel,1.5,Celeron Dual Core 3205U,32,0,SSD,No,Intel,HD Graphics +Acer,E5 774G,Notebook,17.3,4,Windows 10,3.3,598.0,Standard,1600,900,No,No,No,Intel,2.0,Core i3 6006U,1024,0,HDD,No,Nvidia,GeForce 940MX +Lenovo,IdeaPad 320-17IKB,Notebook,17.3,8,No OS,2.8,539.0,Standard,1600,900,No,No,No,Intel,2.5,Core i5 7200U,1024,0,HDD,No,Intel,HD Graphics 620 +Lenovo,IdeaPad Y700-15ISK,Gaming,15.6,8,Windows 10,2.6,1272.0,Full HD,1920,1080,No,Yes,No,Intel,2.6,Core i7 6700HQ,128,1024,SSD,HDD,Nvidia,GeForce GTX 960 +Acer,SP714-51 (i7-7Y75/8GB/256GB/FHD/W10),2 in 1 Convertible,14.0,8,Windows 10,1.2,1149.0,Full HD,1920,1080,Yes,Yes,No,Intel,1.3,Core i7 7Y75,256,0,SSD,No,Intel,HD Graphics 615 +Lenovo,Thinkpad T560,Notebook,15.6,8,Windows 10,2.3,1529.0,Full HD,1920,1080,No,Yes,No,Intel,2.6,Core i7 6600U,256,0,SSD,No,Intel,HD Graphics 520 +MSI,GP62MVR 6RF,Gaming,15.6,8,Windows 10,2.2,1476.11,Full HD,1920,1080,No,No,No,Intel,2.6,Core i7 6700HQ,128,1024,SSD,HDD,Nvidia,GeForce GTX 1060 +HP,15-bw009nv (A12-9720P/6GB/1TB/Radeon,Notebook,15.6,6,Windows 10,2.1,529.0,Full HD,1920,1080,No,No,No,AMD,2.7,A12-Series 9720P,1024,0,HDD,No,AMD,Radeon 530 +Dell,Latitude E7270,Ultrabook,12.5,8,Windows 7,1.26,1713.37,Full HD,1920,1080,Yes,No,No,Intel,2.4,Core i5 6300U,256,0,SSD,No,Intel,HD Graphics 520 +Dell,Inspiron 5578,2 in 1 Convertible,15.0,4,Windows 10,2.08,509.0,Full HD,1920,1080,Yes,No,No,Intel,2.4,Core i3 7100U,500,0,HDD,No,Intel,HD Graphics 620 +Asus,X540SA-RBPDN09 (N3710/4GB/1TB/W10),Notebook,15.6,4,Windows 10,2.65,309.0,Standard,1366,768,No,No,No,Intel,1.6,Pentium Quad Core N3710,1024,0,HDD,No,Intel,HD Graphics 405 +Dell,XPS 13,Ultrabook,13.3,8,Windows 10,1.29,1477.0,Quad HD+,3200,1800,Yes,No,No,Intel,2.7,Core i7 7500U,256,0,SSD,No,Intel,HD Graphics 620 +Dell,Vostro 3568,Notebook,15.6,4,Linux,2.18,521.86,Standard,1366,768,No,No,No,Intel,2.5,Core i5 7200U,1024,0,HDD,No,Intel,HD Graphics 520 +Lenovo,IdeaPad Y700-15ISK,Gaming,15.6,16,Windows 10,2.6,1029.0,Full HD,1920,1080,Yes,Yes,No,Intel,2.6,Core i7 6700HQ,128,1024,SSD,HDD,Nvidia,GeForce GTX 960M +MSI,GL62M 7RDX,Gaming,15.6,8,Windows 10,2.2,1149.0,Full HD,1920,1080,No,No,No,Intel,2.8,Core i7 7700HQ,128,1024,SSD,HDD,Nvidia,GeForce GTX 1050 +Lenovo,ThinkPad Yoga,Netbook,12.5,16,Windows 10,1.3,1650.0,Full HD,1920,1080,Yes,Yes,No,Intel,2.5,Core i7 6500U,512,0,SSD,No,Intel,HD Graphics 520 +Razer,Blade Pro,Gaming,14.0,16,Windows 10,1.95,3499.0,Full HD,1920,1080,No,No,No,Intel,2.8,Core i7 7700HQ,1024,0,SSD,No,Nvidia,GeForce GTX 1060 +Dell,Inspiron 3567,Notebook,15.6,8,Windows 10,2.3,469.01,Standard,1366,768,Yes,No,No,Intel,2.4,Core i3 7100U,1024,0,HDD,No,Intel,HD Graphics 620 +MSI,GE72VR Apache,Gaming,17.3,16,Windows 10,2.7,1598.0,Full HD,1920,1080,No,No,No,Intel,2.8,Core i7 7700HQ,256,1024,SSD,HDD,Nvidia,GeForce GTX 1060 +Apple,MacBook Air,Ultrabook,11.6,4,Mac OS X,1.08,959.0,Standard,1366,768,No,No,No,Intel,1.6,Core i5,256,0,Flash Storage,No,Intel,HD Graphics 6000 +HP,15-bs023nv (i3-6006U/4GB/1TB/FHD/W10),Notebook,15.6,4,Windows 10,2.1,478.0,Full HD,1920,1080,No,No,No,Intel,2.0,Core i3 6006U,1024,0,HDD,No,Intel,HD Graphics 520 +HP,EliteBook 840,Ultrabook,14.0,8,Windows 7,1.54,2198.19,Standard,2560,1440,No,No,No,Intel,2.5,Core i7 6500U,256,0,SSD,No,Intel,HD Graphics 520 +Dell,Vostro 3559,Notebook,15.6,4,Windows 7,2.24,737.0,Standard,1366,768,No,No,No,Intel,2.3,Core i5 6200U,500,0,HDD,No,Intel,HD Graphics 520 +MSI,GL62 6QF,Gaming,15.6,8,Windows 10,2.3,1169.0,Full HD,1920,1080,No,No,No,Intel,2.6,Core i7 6700HQ,128,1024,SSD,HDD,Nvidia,GeForce GTX 960M +Lenovo,ThinkPad 13,Notebook,13.3,16,Windows 10,1.4,1499.0,Full HD,1920,1080,No,Yes,No,Intel,2.7,Core i7 7500U,512,0,SSD,No,Intel,HD Graphics 620 +Lenovo,IdeaPad 320-15ABR,Notebook,15.6,6,Windows 10,2.2,597.57,Full HD,1920,1080,No,No,No,AMD,3.6,A12-Series 9720P,256,0,SSD,No,AMD,Radeon 530 +Asus,ZenBook UX310UA-WB71,Ultrabook,13.3,8,Windows 10,1.45,1280.0,Full HD,1920,1080,No,No,No,Intel,2.5,Core i7 6500U,256,0,SSD,No,Intel,HD Graphics 520 +Acer,Aspire ES1-572,Notebook,15.6,4,Linux,2.4,361.8,Standard,1366,768,No,No,No,Intel,2.0,Core i3 6006U,500,0,HDD,No,Intel,HD Graphics 520 +Dell,Inspiron 7779,2 in 1 Convertible,17.3,16,Windows 10,2.77,1799.0,Full HD,1920,1080,Yes,No,No,Intel,2.7,Core i7 7500U,512,0,SSD,No,Nvidia,GeForce 940MX +HP,EliteBook 840,Notebook,14.0,4,Windows 7,1.54,1099.99,Full HD,1920,1080,No,No,No,Intel,2.3,Core i5 6200U,256,0,SSD,No,Intel,HD Graphics 520 +Asus,Rog GL553VE-FY052T,Gaming,15.6,16,Windows 10,2.5,1600.0,Full HD,1920,1080,No,Yes,No,Intel,2.8,Core i7 7700HQ,256,1024,SSD,HDD,Nvidia,GeForce GTX 1050 Ti +Dell,Latitude 5480,Notebook,14.0,4,Windows 10,1.6,875.0,Standard,1366,768,No,No,No,Intel,2.5,Core i5 7200U,500,0,HDD,No,Intel,HD Graphics 620 +Asus,Rog GL502VS,Gaming,15.6,16,Windows 10,2.34,2325.0,Full HD,1920,1080,No,Yes,No,Intel,2.6,Core i7 6700HQ,256,1024,SSD,HDD,Nvidia,GeForce GTX 1070 +Lenovo,V510-15IKB (i5-7200U/8GB/256GB/FHD/No,Notebook,15.6,8,No OS,2.3,573.0,Full HD,1920,1080,No,Yes,No,Intel,2.5,Core i5 7200U,256,0,SSD,No,Intel,HD Graphics 620 +Dell,XPS 13,2 in 1 Convertible,13.3,8,Windows 10,1.24,1813.0,Quad HD+,3200,1800,Yes,No,No,Intel,1.2,Core i5 7Y54,256,0,SSD,No,Intel,HD Graphics 615 +Dell,Inspiron 3552,Notebook,15.6,4,Linux,2.2,324.0,Standard,1366,768,No,No,No,Intel,1.6,Pentium Quad Core N3710,500,0,HDD,No,Intel,HD Graphics +HP,255 G6,Notebook,15.6,4,Windows 10,1.86,399.0,Standard,1366,768,No,No,No,AMD,2.5,A6-Series 9220,500,0,HDD,No,AMD,Radeon R4 Graphics +Lenovo,IdeaPad 310-15ISK,Notebook,15.6,6,Windows 10,2.4,569.0,Full HD,1920,1080,No,No,No,Intel,2.3,Core i3 6100U,128,0,SSD,No,Nvidia,GeForce 920MX +Lenovo,ThinkPad L460,Notebook,14.0,8,Windows 10,1.9,1072.0,Full HD,1920,1080,No,Yes,No,Intel,2.3,Core i5 6200U,256,0,SSD,No,Intel,HD Graphics 520 +Dell,Inspiron 3552,Notebook,15.6,4,Windows 10,2.2,443.99,Standard,1366,768,No,No,No,Intel,1.6,Pentium Quad Core N3700,500,0,HDD,No,Intel,HD Graphics +Asus,X541NA-GO020T (N3350/4GB/1TB/W10),Notebook,15.6,4,Windows 10,2.0,339.0,Standard,1366,768,No,No,No,Intel,1.1,Celeron Dual Core N3350,1024,0,HDD,No,Intel,HD Graphics 500 +Asus,Rog G752VT-GC073T,Gaming,17.3,16,Windows 10,4.0,1900.0,Full HD,1920,1080,No,Yes,No,Intel,2.6,Core i7 6700HQ,128,1024,SSD,HDD,Nvidia,GeForce GTX 970M +Dell,Vostro 3568,Notebook,15.6,4,Windows 10,2.29,490.0,Standard,1366,768,No,No,No,Intel,2.0,Core i3 6006U,500,0,HDD,No,Intel,HD Graphics 520 +Lenovo,B51-80 (i7-6500U/8GB/1008GB/Radeon,Notebook,15.6,8,Windows 7,2.32,895.0,Full HD,1920,1080,No,No,No,Intel,2.5,Core i7 6500U,1024,0,Hybrid,No,AMD,Radeon R5 M330 +MSI,GE62 Apache,Gaming,15.6,8,Windows 10,2.4,1229.0,Full HD,1920,1080,No,No,No,Intel,2.6,Core i7 6700HQ,128,1024,SSD,HDD,Nvidia,GeForce GTX 960M +Lenovo,Yoga 500-14IBD,2 in 1 Convertible,14.0,4,Windows 10,1.8,833.01,Full HD,1920,1080,Yes,No,No,Intel,2.3,Core i5 6200U,128,0,SSD,No,Intel,HD Graphics 520 +Asus,ZenBook UX305CA-UBM1,Ultrabook,13.3,8,Windows 10,1.2,729.0,Full HD,1920,1080,No,Yes,No,Intel,0.9,Core M 6Y30,512,0,SSD,No,Intel,HD Graphics 515 +Dell,Inspiron 3567,Notebook,15.6,6,Windows 10,2.3,459.0,Standard,1366,768,No,No,No,Intel,2.4,Core i3 7100U,1024,0,HDD,No,Intel,HD Graphics 620 +Acer,Aspire ES1-531,Notebook,15.6,4,Linux,2.4,289.0,Standard,1366,768,No,No,No,Intel,1.6,Celeron Dual Core N3060,500,0,HDD,No,Intel,HD Graphics 400 +Dell,Inspiron 3552,Notebook,15.6,2,Windows 10,2.2,379.0,Standard,1366,768,No,No,No,Intel,1.6,Celeron Dual Core N3050,500,0,HDD,No,Intel,HD Graphics +Lenovo,IdeaPad Y700-15ISK,Notebook,15.6,8,Windows 10,2.6,899.0,Full HD,1920,1080,No,Yes,No,Intel,2.6,Core i7 6700HQ,1024,0,HDD,No,Nvidia,GeForce GTX 960M +HP,Pavilion 15-AW003nv,Notebook,15.6,6,Windows 10,2.04,549.99,Full HD,1920,1080,No,No,No,AMD,2.9,A9-Series 9410,1024,0,Hybrid,No,AMD,Radeon R7 M440 +Dell,Inspiron 3567,Notebook,15.6,8,Linux,2.3,805.99,Standard,1366,768,No,No,No,Intel,2.7,Core i7 7500U,1024,0,HDD,No,AMD,Radeon R5 M430 +HP,Stream 11-Y000na,Netbook,11.6,2,Windows 10,1.17,209.0,Standard,1366,768,No,No,No,Intel,1.6,Celeron Dual Core N3060,32,0,Flash Storage,No,Intel,HD Graphics 400 +Asus,X556UJ-XO044T (i7-6500U/4GB/500GB/GeForce,Notebook,15.6,4,Windows 10,2.2,720.32,Standard,1366,768,No,No,No,Intel,2.5,Core i7 6500U,500,0,HDD,No,Nvidia,GeForce 920M +Lenovo,Yoga 500-14ISK,2 in 1 Convertible,14.0,4,Windows 10,1.8,638.0,Full HD,1920,1080,Yes,Yes,No,Intel,2.5,Core i7 6500U,128,0,SSD,No,Intel,HD Graphics 520 +Lenovo,Yoga 900-13ISK,2 in 1 Convertible,13.3,16,Windows 10,1.3,1499.0,Quad HD+,3200,1800,Yes,Yes,No,Intel,2.5,Core i7 6500U,512,0,SSD,No,Intel,HD Graphics 520 +Lenovo,IdeaPad 100S-14IBR,Notebook,14.0,2,Windows 10,1.5,229.0,Standard,1366,768,No,No,No,Intel,1.6,Celeron Dual Core N3050,64,0,Flash Storage,No,Intel,HD Graphics +HP,15-AC110nv (i7-6500U/6GB/1TB/Radeon,Notebook,15.6,6,Windows 10,2.19,764.0,Standard,1366,768,No,No,No,Intel,2.5,Core i7 6500U,1024,0,HDD,No,AMD,Radeon R5 M330 +Asus,X553SA-XX031T (N3050/4GB/500GB/W10),Notebook,15.6,4,Windows 10,2.2,369.0,Standard,1366,768,No,No,No,Intel,1.6,Celeron Dual Core N3050,500,0,HDD,No,Intel,HD Graphics diff --git a/tests/laptop_pricing.ipynb b/tests/laptop_pricing.ipynb new file mode 100644 index 0000000..c643e91 --- /dev/null +++ b/tests/laptop_pricing.ipynb @@ -0,0 +1,117 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "# Import necessary libraries\n", + "import pandas as pd\n", + "import numpy as np\n", + "from sklearn.model_selection import train_test_split\n", + "from sklearn.linear_model import LinearRegression\n", + "from sklearn.metrics import mean_squared_error, r2_score\n", + "import matplotlib.pyplot as plt" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "# Load the dataset\n", + "file_path = 'laptop_prices.csv'\n", + "data = pd.read_csv(file_path)" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "# Preprocessing\n", + "# Select relevant numeric features for simplicity\n", + "numeric_features = ['Inches', 'Ram', 'Weight']\n", + "target = 'Price_euros'\n", + "\n", + "# Drop rows with missing values\n", + "data = data[numeric_features + [target]].dropna()" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "# Split the data into features (X) and target (y)\n", + "X = data[numeric_features]\n", + "y = data[target]\n", + "\n", + "# Split into training and testing sets\n", + "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)\n", + "\n", + "# Build a Linear Regression model\n", + "model = LinearRegression()\n", + "model.fit(X_train, y_train)\n", + "\n", + "# Make predictions on the test set\n", + "y_pred = model.predict(X_test)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA1sAAAIjCAYAAAD1OgEdAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOzdeVxU5f4H8M8MyzAsA4Mi4IYILkC4oCVQqZlb2m3RbqupLZoG9cuy7vXerqktVlezumpWVtrNFltvablkqRWalmgEqImgVoIom8AwDDPn98fjjAzrzDDDnIHP+/XyNTLnMDznzHOec77PqpAkSQIRERERERE5ldLdCSAiIiIiIuqIGGwRERERERG5AIMtIiIiIiIiF2CwRURERERE5AIMtoiIiIiIiFyAwRYREREREZELMNgiIiIiIiJyAQZbRERERERELsBgi4iIiIiIyAUYbBERdSAKhQKLFi1ydzLcbvTo0Rg9erTl54KCAigUCqxbt85taWqoYRrJ+fr06YOZM2e6OxlE1Ikx2CIiasbq1auhUCgwYsQIhz/jzz//xKJFi3Dw4EHnJUzmdu7cCYVCYfnn4+ODvn37Yvr06Th+/Li7k2eXjIwMLFq0CGVlZW5LQ58+fXDttde269+srq7GokWLsHPnznb9u/XNnDnTKh9pNBoMHjwYy5cvh16vd1u6iIjs4e3uBBARydWGDRvQp08f7Nu3D8eOHUNsbKzdn/Hnn39i8eLF6NOnD4YMGeL8RMrYgw8+iEsvvRQGgwEHDhzAa6+9hs2bNyMrKwvdu3dv17RERUVBp9PBx8fHrt/LyMjA4sWLMXPmTISEhLgmcTJUXV2NxYsXA4BbW99UKhXWrl0LACgrK8PHH3+M+fPnY//+/Xj//fdb/f0jR45AqWS9MhG5D0sgIqIm5OfnIyMjAy+88ALCwsKwYcMGdyfJ41x55ZWYNm0a7rrrLvznP//BsmXLUFJSgvXr1zf7O1VVVS5Ji0KhgJ+fH7y8vFzy+eQa3t7emDZtGqZNm4b09HTs2LEDw4cPxwcffIA///yzyd+RJAk6nQ6ACNbsDbCJiJyJwRYRURM2bNgArVaLyZMn46abbmo22CorK8O8efPQp08fqFQq9OzZE9OnT8fZs2exc+dOXHrppQCAu+66y9IdyjxuqLnxJA3H8tTW1mLhwoUYNmwYgoODERAQgCuvvBLffvut3cdVVFQEb29vS6tFfUeOHIFCocDKlSsBAAaDAYsXL0a/fv3g5+eHLl264IorrsD27dvt/rsAMGbMGAAikAWARYsWQaFQICcnB7fffju0Wi2uuOIKy/7vvPMOhg0bBrVajdDQUNx66604depUo8997bXXEBMTA7Vajcsuuwzfffddo32aG7N1+PBh3HzzzQgLC4NarcaAAQPwz3/+05K+Rx99FAAQHR1t+f4KCgpcksa2+O677/DXv/4VvXv3hkqlQq9evTBv3jxL0GE2c+ZMBAYG4vjx45gwYQICAgLQvXt3LFmyBJIkARDnKiwsDACwePFiy3HXHwv4zTff4Morr0RAQABCQkJw/fXXIzc31+pvmb9f8znWaDTo0qUL/u///g81NTUOHadSqbRcG+bvwdzNcuvWrRg+fDjUajVeffVVy7aG11hL16yZXq/HE088gdjYWMv5fOyxxxp1X9y+fTuuuOIKhISEIDAwEAMGDMA//vEPh46NiDomdiMkImrChg0bMGXKFPj6+uK2227DK6+8gv3791uCJwCorKzElVdeidzcXNx9991ISkrC2bNn8fnnn+P3339HXFwclixZgoULF2L27Nm48sorAQCpqal2paWiogJr167FbbfdhlmzZuH8+fN44403MGHCBOzbt8+u7onh4eEYNWoUNm7ciCeeeMJq2wcffAAvLy/89a9/BSAelpcuXYp7770Xl112GSoqKvDTTz/hwIEDGDdunF3HAAB5eXkAgC5duli9/9e//hX9+vXDM888Y3ngf/rpp/Gvf/0LN998M+69914UFxfjP//5D0aOHInMzExLl7433ngD9913H1JTU/HQQw/h+PHjuO666xAaGopevXq1mJ5ffvkFV155JXx8fDB79mz06dMHeXl5+OKLL/D0009jypQpOHr0KN577z2sWLECXbt2BQBLINIeabTVhx9+iOrqasydOxddunTBvn378J///Ae///47PvzwQ6t9jUYjJk6ciOTkZDz//PPYsmULnnjiCdTV1WHJkiUICwvDK6+8grlz5+LGG2/ElClTAACDBg0CAHz99de45ppr0LdvXyxatAg6nQ7/+c9/cPnll+PAgQPo06eP1d+7+eab0adPHyxduhR79+7Fyy+/jNLSUrz99tsOHWtT+ejIkSO47bbbcN9992HWrFkYMGBAk7/b2jXbtWtXmEwmXHfddfj+++8xe/ZsxMXFISsrCytWrMDRo0fx2WefAQCys7Nx7bXXYtCgQViyZAlUKhWOHTuGH374waHjIqIOSiIiIis//fSTBEDavn27JEmSZDKZpJ49e0r/93//Z7XfwoULJQDSJ5980ugzTCaTJEmStH//fgmA9NZbbzXaJyoqSpoxY0aj90eNGiWNGjXK8nNdXZ2k1+ut9iktLZXCw8Olu+++2+p9ANITTzzR4vG9+uqrEgApKyvL6v34+HhpzJgxlp8HDx4sTZ48ucXPasq3334rAZDefPNNqbi4WPrzzz+lzZs3S3369JEUCoW0f/9+SZIk6YknnpAASLfddpvV7xcUFEheXl7S008/bfV+VlaW5O3tbXm/trZW6tatmzRkyBCr8/Paa69JAKzOYX5+fqPvYeTIkVJQUJB04sQJq79j/u4kSZL+/e9/SwCk/Px8l6exOVFRUa1+D9XV1Y3eW7p0qaRQKKyOb8aMGRIA6YEHHrA63smTJ0u+vr5ScXGxJEmSVFxc3GxeGjJkiNStWzfp3LlzlvcOHTokKZVKafr06Zb3zN/vddddZ/X7999/vwRAOnToUIvHNGPGDCkgIEAqLi6WiouLpWPHjknPPPOMpFAopEGDBln2i4qKkgBIW7ZsafQZDa8xW67Z//73v5JSqZS+++47q+1r1qyRAEg//PCDJEmStGLFCgmA5ZwRETWF3QiJiBrYsGEDwsPDcdVVVwEQ431uueUWvP/++zAajZb9Pv74YwwePBg33nhjo89QKBROS4+Xlxd8fX0BACaTCSUlJairq8Pw4cNx4MABuz9vypQp8Pb2xgcffGB579dff0VOTg5uueUWy3shISHIzs7Gb7/95lC67777boSFhaF79+6YPHkyqqqqsH79egwfPtxqvzlz5lj9/Mknn8BkMuHmm2/G2bNnLf8iIiLQr18/S/fJn376CWfOnMGcOXMs5wcQXeWCg4NbTFtxcTF2796Nu+++G71797baZst31x5ptIdarbb8v6qqCmfPnkVqaiokSUJmZmaj/dPT0y3/VygUSE9PR21tLb7++usW/87p06dx8OBBzJw5E6GhoZb3Bw0ahHHjxuHLL79s9DtpaWlWPz/wwAMA0OS+DVVVVSEsLAxhYWGIjY3FP/7xD6SkpODTTz+12i86OhoTJkxo9fNsuWY//PBDxMXFYeDAgVbfrbkbrPm7Nbdc/u9//4PJZGr1bxNR58RuhERE9RiNRrz//vu46qqrLGOLAGDEiBFYvnw5duzYgfHjxwMQ3ZmmTp3aLulav349li9fjsOHD8NgMFjej46OtvuzunbtiquvvhobN27Ek08+CUB0IfT29rZ0GQOAJUuW4Prrr0f//v1xySWXYOLEibjzzjst3clas3DhQlx55ZXw8vJC165dERcXB2/vxredhsfw22+/QZIk9OvXr8nPNU94cOLECQBotJ95qvmWmKegv+SSS2w6lobaI432OHnyJBYuXIjPP/8cpaWlVtvKy8utflYqlY3+dv/+/QHAajxaU8zH01Q3vbi4OGzduhVVVVUICAiwvN/w2GNiYqBUKlv9WwDg5+eHL774AoCY7CI6Oho9e/ZstJ+t14Et1+xvv/2G3NxcS3fRhs6cOQMAuOWWW7B27Vrce++9+Pvf/46rr74aU6ZMwU033cQZEInIgsEWEVE933zzDU6fPo3333+/yamlN2zYYAm22qq5FhSj0Wg1a94777yDmTNn4oYbbsCjjz6Kbt26wcvLC0uXLrWMX7HXrbfeirvuugsHDx7EkCFDsHHjRlx99dWWcUkAMHLkSOTl5eF///sftm3bhrVr12LFihVYs2YN7r333lb/RmJiIsaOHdvqfvVbZQDReqdQKPDVV181OXtgYGCgDUfoWnJKo9FoxLhx41BSUoK//e1vGDhwIAICAvDHH39g5syZsmt1safV18vLy6E81BYmkwmJiYl44YUXmtxuHmenVquxe/dufPvtt9i8eTO2bNmCDz74AGPGjMG2bds48yURAWCwRURkZcOGDejWrRtWrVrVaNsnn3yCTz/9FGvWrIFarUZMTAx+/fXXFj+vpQdLrVbb5GK5J06csGp5+Oijj9C3b1988sknVp/XcIILe9xwww247777LF0Jjx49igULFjTaLzQ0FHfddRfuuusuVFZWYuTIkVi0aJFNwZajYmJiIEkSoqOjLS0uTYmKigIgWiLMXbwAMYtifn4+Bg8e3Ozvms+vo99fe6TRVllZWTh69CjWr1+P6dOnW95vbtZIk8mE48ePW6X76NGjAGCZ3KK54zYfz5EjRxptO3z4MLp27WrVqgWIY6/f8nTs2DGYTKZGE2m0B1uu2ZiYGBw6dAhXX311q4GhUqnE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hLuTQy4gSRJ0Oh3UajUUCoW7k2NFqVSid+/ebU4Xgy0iIiIikiVfX1/069ePXQk7KIPBgN27d2PkyJGyWyjd19fXKa1tDLaIiIiISLaUSiX8/PzcnQxyAS8vL9TV1cHPz092wZazyKdzJBERERERUQfCYIuIiIiIiMgFGGwRERERERG5AIMtIiIiIiIiF2CwRURERERE5AIMtoiIiIiIiFyAwRYREREREZELMNgiIiIiIiJyAQZbRERERERELsBgi4iIiIiIyAUYbBEREREREbkAgy0iIiIiIiIXYLBFRERERETkAgy2iIiIiIiIXIDBFhERERERkQsw2CIiIiIiInIBBltEREREREQuwGCLiIiIiIjIBRhsERERERERuQCDLSIiIiIiIhdgsEVEREREROQCDLaIiIiIiIhcgMEWERERERGRCzDYIiIiIiIicgEGW0RERERERC7AYIuIiIiIiMgFGGwRERERERG5AIMtIiIiIiIiF2CwRURERERE5AIMtoiIiIiIiFyAwRYREREREZELMNgiIiIiIiJyAQZbRERERERELsBgi4iIiIiIyAUYbBEREREREbkAgy0iIiIiIiIXYLBFRERERETkAgy2iIiIiIiIXIDBFhERERERkQu4NdhatGgRFAqF1b+BAwdattfU1CAtLQ1dunRBYGAgpk6diqKiIqvPOHnyJCZPngx/f39069YNjz76KOrq6qz22blzJ5KSkqBSqRAbG4t169a1x+EREREREVEn5vaWrYSEBJw+fdry7/vvv7dsmzdvHr744gt8+OGH2LVrF/78809MmTLFst1oNGLy5Mmora1FRkYG1q9fj3Xr1mHhwoWWffLz8zF58mRcddVVOHjwIB566CHce++92Lp1a7seJxERERERdS7ebk+AtzciIiIavV9eXo433ngD7777LsaMGQMAeOuttxAXF4e9e/ciOTkZ27ZtQ05ODr7++muEh4djyJAhePLJJ/G3v/0NixYtgq+vL9asWYPo6GgsX74cABAXF4fvv/8eK1aswIQJE9r1WImIiIiIqPNwe7D122+/oXv37vDz80NKSgqWLl2K3r174+eff4bBYMDYsWMt+w4cOBC9e/fGnj17kJycjD179iAxMRHh4eGWfSZMmIC5c+ciOzsbQ4cOxZ49e6w+w7zPQw891Gya9Ho99Hq95eeKigoAgMFggMFgcNKRO86cBjmkheSL+YRsxbxCtmJeIVswn5CtPDWv2JNetwZbI0aMwLp16zBgwACcPn0aixcvxpVXXolff/0VhYWF8PX1RUhIiNXvhIeHo7CwEABQWFhoFWiZt5u3tbRPRUUFdDod1Gp1o3QtXboUixcvbvT+tm3b4O/v7/DxOtv27dvdnQTyAMwnZCvmFbIV8wrZgvmEbOVpeaW6utrmfd0abF1zzTWW/w8aNAgjRoxAVFQUNm7c2GQQ1F4WLFiAhx9+2PJzRUUFevXqhfHjx0Oj0bgtXWYGgwHbt2/HuHHj4OPj4+7kkEwxn5CtmFfIVswrZAvmE7KVp+YVc683W7i9G2F9ISEh6N+/P44dO4Zx48ahtrYWZWVlVq1bRUVFljFeERER2Ldvn9VnmGcrrL9PwxkMi4qKoNFomg3oVCoVVCpVo/d9fHxklRHklh6SJ+YTshXzCtmKeYVswXxCtvK0vGJPWt0+G2F9lZWVyMvLQ2RkJIYNGwYfHx/s2LHDsv3IkSM4efIkUlJSAAApKSnIysrCmTNnLPts374dGo0G8fHxln3qf4Z5H/NnEBERERERuYJbg6358+dj165dKCgoQEZGBm688UZ4eXnhtttuQ3BwMO655x48/PDD+Pbbb/Hzzz/jrrvuQkpKCpKTkwEA48ePR3x8PO68804cOnQIW7duxeOPP460tDRLy9ScOXNw/PhxPPbYYzh8+DBWr16NjRs3Yt68ee48dCIiIiIi6uDc2o3w999/x2233YZz584hLCwMV1xxBfbu3YuwsDAAwIoVK6BUKjF16lTo9XpMmDABq1evtvy+l5cXNm3ahLlz5yIlJQUBAQGYMWMGlixZYtknOjoamzdvxrx58/DSSy+hZ8+eWLt2Lad9JyIiIiIil3JrsPX++++3uN3Pzw+rVq3CqlWrmt0nKioKX375ZYufM3r0aGRmZjqURiIiIiIiIkfIaswWERERERFRR8Fgi4iIiIiIyAUYbBEREREREbkAgy0iIiIiIiIXYLBFRERERETkAgy2iIiIiIiIXIDBFhERERERkQsw2CIiIiIiInIBBltEREREREQuwGCLiIiIiIjIBRhsERERERERuQCDLSIiIiIiIhdgsEVEREREROQCDLaIiIiIiIhcgMEWERERERGRCzDYIiIiIiIicgEGW0RERERERC7AYIuIiIiIiMgFGGwRERERERG5AIMtIiIiIiIiF2CwRURERERE5AIMtoiIiIiIiFyAwRYREREREZELMNgiIiIiIiJyAQZbRERERERELsBgi4iIiIiIyAUYbBEREREREbkAgy0iIiIiIiIXYLBFRERERETkAgy2iIiIiIiIXIDBFhERERERkQsw2CIiIiIiInIBBltEREREREQuwGCLiIiIiIjIBRhsERERERERuQCDLSIiIiIiIhdgsEVEREREROQCDLaIiIiIiIhcgMEWERERERGRCzDYIiIiIiIicgEGW0RERERERC7AYIuIiIiIiMgFGGwRERERERG5AIMtIiIiIiIiF2CwRURERERE5AIMtoiIiIiIiFyAwRYREREREZELMNgiIiIiIiJyAQZbRERERERELsBgi4iIiIiIyAUYbBEREREREbkAgy0iIiIiIiIXYLBFRERERETkAgy2iIiIiIiIXIDBFhERERERkQsw2CIiIiIiInIBBltEREREREQuwGCLiIiIiIjIBRhsERERERERuQCDLSIiIiIiIheQTbD17LPPQqFQ4KGHHrK8V1NTg7S0NHTp0gWBgYGYOnUqioqKrH7v5MmTmDx5Mvz9/dGtWzc8+uijqKurs9pn586dSEpKgkqlQmxsLNatW9cOR0RERERERJ2ZLIKt/fv349VXX8WgQYOs3p83bx6++OILfPjhh9i1axf+/PNPTJkyxbLdaDRi8uTJqK2tRUZGBtavX49169Zh4cKFln3y8/MxefJkXHXVVTh48CAeeugh3Hvvvdi6dWu7HR8REREREXU+bg+2Kisrcccdd+D111+HVqu1vF9eXo433ngDL7zwAsaMGYNhw4bhrbfeQkZGBvbu3QsA2LZtG3JycvDOO+9gyJAhuOaaa/Dkk09i1apVqK2tBQCsWbMG0dHRWL58OeLi4pCeno6bbroJK1ascMvxEhERERFR5+Dt7gSkpaVh8uTJGDt2LJ566inL+z///DMMBgPGjh1reW/gwIHo3bs39uzZg+TkZOzZsweJiYkIDw+37DNhwgTMnTsX2dnZGDp0KPbs2WP1GeZ96ndXbEiv10Ov11t+rqioAAAYDAYYDIa2HnKbmdMgh7SQfDGfkK2YV8hWzCtkC+YTspWn5hV70uvWYOv999/HgQMHsH///kbbCgsL4evri5CQEKv3w8PDUVhYaNmnfqBl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Kxc/X//617nqqquw2+0sXLiQ9773vRw9ejTrPcWMN6dPn+Yd73gHVVVVLFy4kE9/+tPE4/HZPBSNGaYYW3nTm940rl+58847s95zsdiKFmzNI37605/yyU9+ki996UscOHCAzZs3c+ONNzIwMDDXTdOYY5qbm7lw4UL67w9/+EP6tU984hP88pe/5Gc/+xnPPvss58+f54//+I/nsLUas0EwGGTz5s3s3bs37+v3338/3/nOd3jooYfYv38/VquVG2+8kXA4nH7PLbfcQkdHB0899RS/+tWveO6557j99ttn6xA0ZonJbAXgpptuyupj/uVf/iXrdc1WLn6effZZduzYwQsvvMBTTz1FLBbjhhtuIBgMpt8z2XiTSCR4xzveQTQapb29nUcffZRHHnmEe++9dy4OSWOGKMZWAG677basfuX+++9Pv3ZR2YqqMW+4+uqr1R07dqT/n0gk1EWLFqlf//rX57BVGnPNl770JXXz5s15X/N4PKrBYFB/9rOfpZ/r6upSAXXfvn2z1EKNuQZQf/7zn6f/ryiK2tDQoD7wwAPp5zwej2oymdR/+Zd/UVVVVTs7O1VAfemll9Lv+fWvf61KkqSeO3du1tquMbvk2oqqquqHP/xh9T3veU/Bz2i2cmkyMDCgAuqzzz6rqmpx480TTzyhyrKs9vX1pd/zve99T62urlYjkcjsHoDGrJFrK6qqqtddd5368Y9/vOBnLiZb0Wa25gnRaJRXXnmF66+/Pv2cLMtcf/317Nu3bw5bplEJHD9+nEWLFrFq1SpuueUWTp8+DcArr7xCLBbLspv169ezbNkyzW4uYXp6eujr68uyC4fDwdatW9N2sW/fPpxOJ1deeWX6Pddffz2yLLN///5Zb7PG3PLMM8+wcOFCLrvsMu666y6Gh4fTr2m2cmni9XoBqKmpAYobb/bt20dLSwv19fXp99x44434fD46OjpmsfUas0muraT48Y9/TG1tLRs3buSee+5hdHQ0/drFZCv6uW6ARnEMDQ2RSCSyjA6gvr6eI0eOzFGrNCqBrVu38sgjj3DZZZdx4cIFvvKVr/DGN76R119/nb6+PoxGI06nM+sz9fX19PX1zU2DNeac1LXP15+kXuvr62PhwoVZr+v1empqajTbucS46aab+OM//mNWrlxJd3c3n//853nb297Gvn370Ol0mq1cgiiK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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Plotting: Predicted vs Actual Prices\n", + "# Plotting: Actual vs Predicted Prices with Different Colors\n", + "plt.figure(figsize=(10, 6))\n", + "plt.scatter(range(len(y_test)), y_test, color='blue', alpha=0.7, label='Actual Prices')\n", + "plt.scatter(range(len(y_test)), y_pred, color='orange', alpha=0.7, label='Predicted Prices')\n", + "plt.title(\"Actual vs Predicted Laptop Prices\")\n", + "plt.xlabel(\"Samples\")\n", + "plt.ylabel(\"Prices (Euros)\")\n", + "plt.legend()\n", + "plt.grid(True)\n", + "plt.show()" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "ml_env", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.7" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/tests/netflix.csv b/tests/netflix.csv new file mode 100644 index 0000000..7411f35 --- /dev/null +++ b/tests/netflix.csv @@ -0,0 +1,1010 @@ +Date,Open,High,Low,Close,Adj Close,Volume +2018-02-05,262.000000,267.899994,250.029999,254.259995,254.259995,11896100 +2018-02-06,247.699997,266.700012,245.000000,265.720001,265.720001,12595800 +2018-02-07,266.579987,272.450012,264.329987,264.559998,264.559998,8981500 +2018-02-08,267.079987,267.619995,250.000000,250.100006,250.100006,9306700 +2018-02-09,253.850006,255.800003,236.110001,249.470001,249.470001,16906900 +2018-02-12,252.139999,259.149994,249.000000,257.950012,257.950012,8534900 +2018-02-13,257.290009,261.410004,254.699997,258.269989,258.269989,6855200 +2018-02-14,260.470001,269.880005,260.329987,266.000000,266.000000,10972000 +2018-02-15,270.029999,280.500000,267.630005,280.269989,280.269989,10759700 +2018-02-16,278.730011,281.959991,275.690002,278.519989,278.519989,8312400 +2018-02-20,277.739990,285.809998,276.609985,278.549988,278.549988,7769000 +2018-02-21,282.070007,286.640015,280.010010,281.040009,281.040009,9371100 +2018-02-22,283.880005,284.500000,274.450012,278.140015,278.140015,8891500 +2018-02-23,281.000000,286.000000,277.809998,285.929993,285.929993,7301800 +2018-02-26,288.750000,295.649994,287.010010,294.160004,294.160004,10268600 +2018-02-27,294.769989,297.359985,290.589996,290.609985,290.609985,9416500 +2018-02-28,293.100006,295.750000,290.779999,291.380005,291.380005,7653500 +2018-03-01,292.750000,295.250000,283.829987,290.390015,290.390015,11932100 +2018-03-02,284.649994,301.179993,283.230011,301.049988,301.049988,13345300 +2018-03-05,302.850006,316.910004,297.600006,315.000000,315.000000,18986100 +2018-03-06,319.880005,325.790009,316.500000,325.220001,325.220001,18525800 +2018-03-07,320.000000,323.739990,314.549988,321.160004,321.160004,17132200 +2018-03-08,322.200012,322.920013,314.130005,317.000000,317.000000,11340100 +2018-03-09,321.329987,331.440002,320.230011,331.440002,331.440002,14500200 +2018-03-12,333.559998,333.980011,318.600006,321.299988,321.299988,20369200 +2018-03-13,323.869995,325.839996,313.279999,315.880005,315.880005,12917200 +2018-03-14,318.160004,323.880005,317.700012,321.549988,321.549988,10475100 +2018-03-15,323.170013,323.399994,318.140015,321.089996,321.089996,5642900 +2018-03-16,321.420013,324.109985,318.369995,318.450012,318.450012,7333700 +2018-03-19,315.799988,317.000000,307.339996,313.480011,313.480011,9925200 +2018-03-20,313.260010,319.500000,312.799988,317.500000,317.500000,5991900 +2018-03-21,316.350006,319.399994,314.510010,316.480011,316.480011,5263900 +2018-03-22,313.070007,314.119995,305.660004,306.700012,306.700012,8063300 +2018-03-23,307.410004,309.369995,300.359985,300.940002,300.940002,9529900 +2018-03-26,309.359985,321.029999,302.000000,320.350006,320.350006,11988300 +2018-03-27,322.489990,322.899994,297.000000,300.690002,300.690002,12068600 +2018-03-28,298.390015,298.799988,281.609985,285.769989,285.769989,18972900 +2018-03-29,287.000000,295.350006,275.899994,295.350006,295.350006,19145500 +2018-04-02,291.940002,292.869995,275.049988,280.290009,280.290009,13405800 +2018-04-03,285.450012,291.250000,278.010010,283.670013,283.670013,12694900 +2018-04-04,273.630005,290.309998,271.220001,288.940002,288.940002,12914000 +2018-04-05,293.149994,299.160004,289.109985,293.970001,293.970001,10655200 +2018-04-06,289.100006,298.850006,285.649994,288.850006,288.850006,11444800 +2018-04-09,291.769989,299.549988,289.119995,289.929993,289.929993,9853600 +2018-04-10,297.679993,298.950012,291.690002,298.070007,298.070007,10660500 +2018-04-11,302.880005,311.640015,301.820007,303.670013,303.670013,14877400 +2018-04-12,309.720001,311.130005,306.750000,309.250000,309.250000,10249400 +2018-04-13,317.290009,317.489990,308.230011,311.649994,311.649994,12046600 +2018-04-16,315.989990,316.100006,304.000000,307.779999,307.779999,20307900 +2018-04-17,329.660004,338.619995,323.769989,336.059998,336.059998,33866500 +2018-04-18,336.299988,338.820007,331.100006,334.519989,334.519989,11221100 +2018-04-19,332.880005,335.309998,326.769989,332.700012,332.700012,8438800 +2018-04-20,332.220001,336.510010,326.000000,327.769989,327.769989,9158700 +2018-04-23,329.149994,331.220001,317.079987,318.690002,318.690002,8968000 +2018-04-24,319.220001,320.250000,302.309998,307.019989,307.019989,13893200 +2018-04-25,306.369995,309.980011,292.619995,305.760010,305.760010,14919700 +2018-04-26,310.000000,316.630005,305.579987,313.980011,313.980011,9266700 +2018-04-27,316.250000,317.450012,306.500000,311.760010,311.760010,7074400 +2018-04-30,311.070007,317.880005,310.119995,312.459991,312.459991,6088800 +2018-05-01,310.359985,313.480011,306.690002,313.299988,313.299988,6036600 +2018-05-02,311.649994,317.100006,310.399994,313.359985,313.359985,5697100 +2018-05-03,312.589996,312.589996,305.730011,311.690002,311.690002,6135800 +2018-05-04,308.709991,320.980011,307.670013,320.089996,320.089996,8209500 +2018-05-07,321.989990,329.019989,319.339996,326.260010,326.260010,7117800 +2018-05-08,325.899994,327.350006,323.049988,326.890015,326.890015,4735700 +2018-05-09,328.790009,331.950012,327.510010,330.299988,330.299988,5633400 +2018-05-10,331.500000,332.059998,327.339996,329.600006,329.600006,5302300 +2018-05-11,329.649994,331.260010,324.869995,326.459991,326.459991,4589700 +2018-05-14,327.250000,330.500000,327.040009,328.529999,328.529999,4089800 +2018-05-15,325.940002,326.940002,322.429993,326.130005,326.130005,4746100 +2018-05-16,326.279999,329.720001,325.140015,328.190002,328.190002,3671700 +2018-05-17,327.529999,330.450012,323.170013,325.220001,325.220001,4935700 +2018-05-18,324.899994,326.420013,322.799988,324.179993,324.179993,3577700 +2018-05-21,327.109985,331.880005,325.450012,331.820007,331.820007,6657300 +2018-05-22,334.049988,336.630005,331.149994,331.619995,331.619995,5964400 +2018-05-23,329.040009,345.000000,328.089996,344.720001,344.720001,10049100 +2018-05-24,344.339996,354.000000,341.119995,349.290009,349.290009,14758600 +2018-05-25,349.899994,354.359985,348.829987,351.290009,351.290009,7817400 +2018-05-29,351.500000,356.100006,346.709991,349.730011,349.730011,9717900 +2018-05-30,352.369995,354.000000,349.260010,353.540009,353.540009,5685500 +2018-05-31,353.799988,355.529999,350.209991,351.600006,351.600006,6921700 +2018-06-01,353.880005,359.989990,352.820007,359.929993,359.929993,7112300 +2018-06-04,362.679993,363.000000,355.510010,361.809998,361.809998,7682000 +2018-06-05,363.320007,369.829987,361.410004,365.799988,365.799988,8358000 +2018-06-06,367.779999,369.679993,363.329987,367.450012,367.450012,7712300 +2018-06-07,368.540009,368.700012,357.799988,361.399994,361.399994,8278000 +2018-06-08,358.059998,362.390015,356.250000,360.570007,360.570007,5225700 +2018-06-11,361.880005,365.670013,360.910004,361.450012,361.450012,4432400 +2018-06-12,363.600006,365.980011,362.000000,363.829987,363.829987,4291000 +2018-06-13,367.529999,384.250000,364.109985,379.929993,379.929993,18222800 +2018-06-14,384.269989,395.029999,383.250000,392.869995,392.869995,14598300 +2018-06-15,390.709991,398.859985,387.510010,391.980011,391.980011,13588100 +2018-06-18,387.720001,393.160004,386.500000,390.399994,390.399994,6824800 +2018-06-19,389.500000,405.290009,388.500000,404.980011,404.980011,16697100 +2018-06-20,415.149994,419.470001,409.600006,416.760010,416.760010,16494600 +2018-06-21,421.380005,423.209991,406.369995,415.440002,415.440002,18389900 +2018-06-22,419.980011,420.500000,409.649994,411.089996,411.089996,10428600 +2018-06-25,404.690002,405.989990,378.750000,384.480011,384.480011,22490900 +2018-06-26,393.279999,404.779999,389.049988,399.390015,399.390015,15191200 +2018-06-27,407.559998,411.589996,390.000000,390.390015,390.390015,16541400 +2018-06-28,395.000000,396.899994,387.100006,395.420013,395.420013,12219900 +2018-06-29,399.190002,401.329987,390.549988,391.429993,391.429993,9252500 +2018-07-02,385.450012,398.380005,380.000000,398.179993,398.179993,8142500 +2018-07-03,399.489990,399.980011,389.500000,390.519989,390.519989,5280300 +2018-07-05,393.799988,399.239990,390.859985,398.390015,398.390015,8448900 +2018-07-06,397.450012,408.649994,395.519989,408.250000,408.250000,8629600 +2018-07-09,415.950012,419.119995,411.100006,418.970001,418.970001,11127500 +2018-07-10,417.239990,419.440002,413.079987,415.630005,415.630005,9382900 +2018-07-11,411.339996,419.769989,410.600006,418.649994,418.649994,9713900 +2018-07-12,415.160004,416.790009,407.799988,413.500000,413.500000,12743300 +2018-07-13,409.190002,410.000000,395.079987,395.799988,395.799988,15719000 +2018-07-16,398.980011,403.359985,391.750000,400.480011,400.480011,22960000 +2018-07-17,346.950012,385.000000,344.000000,379.480011,379.480011,58410400 +2018-07-18,381.239990,383.130005,372.359985,375.130005,375.130005,21746300 +2018-07-19,371.059998,375.750000,363.000000,364.230011,364.230011,16878700 +2018-07-20,364.920013,370.500000,360.140015,361.049988,361.049988,15096700 +2018-07-23,359.149994,363.899994,353.600006,362.660004,362.660004,11505200 +2018-07-24,366.940002,367.399994,354.559998,357.320007,357.320007,12851500 +2018-07-25,357.570007,363.279999,355.649994,362.869995,362.869995,8467800 +2018-07-26,358.190002,365.540009,356.630005,363.089996,363.089996,6993700 +2018-07-27,366.850006,367.000000,351.649994,355.209991,355.209991,8949500 +2018-07-30,351.929993,352.029999,334.019989,334.959991,334.959991,18260700 +2018-07-31,331.510010,342.500000,328.000000,337.450012,337.450012,14085400 +2018-08-01,335.869995,344.410004,334.019989,338.380005,338.380005,7790500 +2018-08-02,337.230011,345.000000,334.709991,344.500000,344.500000,7131300 +2018-08-03,347.750000,347.859985,338.480011,343.089996,343.089996,8848400 +2018-08-06,342.869995,351.980011,341.739990,350.920013,350.920013,8198100 +2018-08-07,353.230011,357.309998,349.010010,351.829987,351.829987,7970900 +2018-08-08,352.209991,352.290009,346.609985,347.609985,347.609985,5394700 +2018-08-09,347.959991,352.440002,345.820007,349.359985,349.359985,4820300 +2018-08-10,346.910004,349.100006,344.420013,345.869995,345.869995,4328400 +2018-08-13,339.890015,347.190002,339.070007,341.309998,341.309998,6888900 +2018-08-14,342.089996,342.410004,336.250000,337.489990,337.489990,5805200 +2018-08-15,334.029999,335.500000,321.000000,326.399994,326.399994,11784500 +2018-08-16,329.899994,331.170013,321.209991,322.440002,322.440002,6689700 +2018-08-17,319.010010,324.369995,312.959991,316.779999,316.779999,10407900 +2018-08-20,314.640015,331.600006,310.929993,327.730011,327.730011,13591100 +2018-08-21,331.000000,341.500000,329.700012,338.019989,338.019989,14783200 +2018-08-22,338.489990,346.209991,337.410004,344.440002,344.440002,8930700 +2018-08-23,348.109985,350.079987,337.649994,339.170013,339.170013,11336400 +2018-08-24,346.000000,359.149994,344.540009,358.820007,358.820007,14729100 +2018-08-27,367.149994,374.489990,360.000000,364.579987,364.579987,17427300 +2018-08-28,367.230011,369.989990,360.380005,368.489990,368.489990,9222600 +2018-08-29,367.200012,369.859985,362.910004,368.040009,368.040009,8118700 +2018-08-30,365.000000,376.809998,363.540009,370.980011,370.980011,10981000 +2018-08-31,370.660004,376.000000,367.079987,367.679993,367.679993,7943400 +2018-09-04,366.470001,368.880005,361.260010,363.600006,363.600006,7605200 +2018-09-05,360.000000,363.390015,335.829987,341.179993,341.179993,13092800 +2018-09-06,347.440002,356.000000,341.989990,346.459991,346.459991,13050200 +2018-09-07,342.200012,355.750000,341.250000,348.679993,348.679993,9105800 +2018-09-10,352.269989,352.500000,343.079987,348.410004,348.410004,5752200 +2018-09-11,344.670013,356.149994,343.899994,355.929993,355.929993,6198100 +2018-09-12,359.079987,370.429993,356.239990,369.950012,369.950012,10480800 +2018-09-13,371.910004,374.089996,366.839996,368.149994,368.149994,8366100 +2018-09-14,368.549988,371.089996,363.459991,364.559998,364.559998,4756400 +2018-09-17,364.220001,367.329987,349.570007,350.350006,350.350006,7071900 +2018-09-18,353.670013,368.149994,351.559998,367.649994,367.649994,10414000 +2018-09-19,373.950012,377.609985,359.170013,366.959991,366.959991,11876800 +2018-09-20,370.260010,370.260010,363.170013,365.359985,365.359985,6768100 +2018-09-21,366.589996,372.220001,360.739990,361.190002,361.190002,11930600 +2018-09-24,359.000000,373.640015,354.329987,369.609985,369.609985,9322500 +2018-09-25,370.230011,371.339996,364.489990,369.429993,369.429993,6799800 +2018-09-26,373.589996,382.000000,370.880005,377.880005,377.880005,13799700 +2018-09-27,379.869995,383.200012,376.000000,380.709991,380.709991,7326200 +2018-09-28,379.239990,380.799988,373.730011,374.130005,374.130005,7114900 +2018-10-01,375.850006,386.109985,375.589996,381.429993,381.429993,8376600 +2018-10-02,384.380005,386.799988,373.829987,377.140015,377.140015,8638700 +2018-10-03,378.529999,380.929993,374.880005,377.049988,377.049988,5798600 +2018-10-04,375.880005,375.920013,360.399994,363.649994,363.649994,9074400 +2018-10-05,359.769989,363.500000,343.000000,351.350006,351.350006,13523000 +2018-10-08,345.179993,352.950012,338.109985,349.100006,349.100006,12375500 +2018-10-09,348.480011,358.720001,347.089996,355.709991,355.709991,8755000 +2018-10-10,353.519989,355.149994,325.390015,325.890015,325.890015,17183100 +2018-10-11,324.940002,334.200012,315.809998,321.100006,321.100006,16082100 +2018-10-12,339.570007,341.299988,328.899994,339.559998,339.559998,14870800 +2018-10-15,337.630005,339.209991,326.929993,333.130005,333.130005,11215000 +2018-10-16,337.239990,347.950012,330.559998,346.399994,346.399994,20156400 +2018-10-17,378.329987,380.000000,356.500000,364.700012,364.700012,32610900 +2018-10-18,360.670013,362.200012,346.049988,346.709991,346.709991,18461000 +2018-10-19,351.000000,355.799988,332.200012,332.670013,332.670013,16717200 +2018-10-22,333.100006,335.799988,320.339996,329.540009,329.540009,17097200 +2018-10-23,318.000000,336.579987,316.769989,333.160004,333.160004,14907300 +2018-10-24,332.279999,333.000000,300.730011,301.829987,301.829987,19039300 +2018-10-25,307.119995,319.940002,305.250000,312.869995,312.869995,13346900 +2018-10-26,300.510010,313.989990,292.299988,299.829987,299.829987,19616000 +2018-10-29,305.260010,307.890015,275.399994,284.839996,284.839996,21698800 +2018-10-30,275.570007,290.519989,271.209991,285.809998,285.809998,23685700 +2018-10-31,297.769989,311.500000,295.049988,301.779999,301.779999,20360300 +2018-11-01,304.589996,318.450012,296.670013,317.380005,317.380005,15121500 +2018-11-02,318.000000,321.880005,308.329987,309.100006,309.100006,13404600 +2018-11-05,311.100006,317.529999,303.739990,315.440002,315.440002,10283000 +2018-11-06,314.760010,320.220001,305.299988,310.839996,310.839996,9710400 +2018-11-07,312.899994,328.559998,311.000000,327.500000,327.500000,13328300 +2018-11-08,328.000000,332.049988,316.609985,317.920013,317.920013,11023900 +2018-11-09,311.070007,312.980011,298.010010,303.470001,303.470001,13480800 +2018-11-12,300.000000,302.489990,290.630005,294.070007,294.070007,10924800 +2018-11-13,295.000000,303.549988,289.100006,294.399994,294.399994,12232200 +2018-11-14,300.399994,301.839996,278.299988,286.730011,286.730011,16853600 +2018-11-15,285.510010,292.500000,282.160004,290.059998,290.059998,9967100 +2018-11-16,287.140015,291.720001,281.000000,286.209991,286.209991,9099500 +2018-11-19,283.790009,285.089996,269.149994,270.600006,270.600006,12993800 +2018-11-20,254.630005,276.339996,250.000000,266.980011,266.980011,16693800 +2018-11-21,274.420013,275.339996,261.510010,262.130005,262.130005,11023000 +2018-11-23,260.109985,265.500000,256.839996,258.820007,258.820007,5245100 +2018-11-26,260.549988,266.250000,253.800003,261.429993,261.429993,12498600 +2018-11-27,259.239990,269.079987,256.140015,266.630005,266.630005,11149500 +2018-11-28,271.980011,284.000000,263.339996,282.649994,282.649994,14801300 +2018-11-29,282.320007,290.489990,275.500000,288.750000,288.750000,15431500 +2018-11-30,288.000000,290.809998,283.059998,286.130005,286.130005,11860100 +2018-12-03,293.190002,298.720001,284.579987,290.299988,290.299988,14117400 +2018-12-04,288.130005,295.739990,274.720001,275.329987,275.329987,12800600 +2018-12-06,268.329987,283.220001,267.140015,282.880005,282.880005,13074300 +2018-12-07,282.480011,284.209991,263.380005,265.140015,265.140015,12466700 +2018-12-10,264.190002,271.179993,260.609985,269.700012,269.700012,9605600 +2018-12-11,274.079987,274.500000,262.760010,265.320007,265.320007,9843200 +2018-12-12,267.660004,281.769989,266.480011,274.880005,274.880005,11456700 +2018-12-13,277.640015,279.320007,271.850006,276.019989,276.019989,8379300 +2018-12-14,271.809998,277.670013,265.000000,266.839996,266.839996,9915300 +2018-12-17,266.510010,272.980011,261.079987,262.799988,262.799988,9634700 +2018-12-18,263.299988,275.750000,263.290009,270.940002,270.940002,10350100 +2018-12-19,269.959991,280.869995,263.769989,266.769989,266.769989,13788400 +2018-12-20,264.640015,269.899994,251.880005,260.579987,260.579987,16792900 +2018-12-21,263.829987,264.500000,241.289993,246.389999,246.389999,21397600 +2018-12-24,242.000000,250.649994,233.679993,233.880005,233.880005,9547600 +2018-12-26,233.919998,254.500000,231.229996,253.669998,253.669998,14402700 +2018-12-27,250.110001,255.589996,240.100006,255.570007,255.570007,12235200 +2018-12-28,257.940002,261.910004,249.800003,256.079987,256.079987,10992800 +2018-12-31,260.160004,270.100006,260.000000,267.660004,267.660004,13508900 +2019-01-02,259.279999,269.750000,256.579987,267.660004,267.660004,11679500 +2019-01-03,270.200012,275.790009,264.429993,271.200012,271.200012,14969600 +2019-01-04,281.880005,297.799988,278.540009,297.570007,297.570007,19330100 +2019-01-07,302.100006,316.799988,301.649994,315.339996,315.339996,18620100 +2019-01-08,319.980011,320.589996,308.010010,320.269989,320.269989,15359200 +2019-01-09,317.709991,323.350006,313.500000,319.959991,319.959991,13343200 +2019-01-10,314.570007,325.369995,312.500000,324.660004,324.660004,13472500 +2019-01-11,330.959991,341.089996,328.519989,337.589996,337.589996,19500400 +2019-01-14,334.239990,335.480011,329.130005,332.940002,332.940002,10499600 +2019-01-15,349.600006,357.220001,347.000000,354.640015,354.640015,21181200 +2019-01-16,354.000000,358.850006,348.109985,351.390015,351.390015,15385500 +2019-01-17,349.500000,355.790009,346.410004,353.190002,353.190002,18871200 +2019-01-18,351.970001,353.000000,336.730011,339.100006,339.100006,26621000 +2019-01-22,334.890015,336.880005,321.029999,325.160004,325.160004,17941400 +2019-01-23,328.250000,331.750000,318.600006,321.989990,321.989990,13480100 +2019-01-24,320.600006,331.799988,319.000000,326.670013,326.670013,11131600 +2019-01-25,328.720001,340.000000,328.510010,338.049988,338.049988,11152900 +2019-01-28,334.700012,336.299988,328.880005,335.660004,335.660004,8652100 +2019-01-29,335.869995,338.220001,328.149994,328.899994,328.899994,7655200 +2019-01-30,332.750000,341.779999,330.799988,340.660004,340.660004,9234500 +2019-01-31,339.679993,345.989990,338.089996,339.500000,339.500000,8535500 +2019-02-01,337.179993,346.839996,336.500000,339.850006,339.850006,9827800 +2019-02-04,342.600006,352.000000,341.299988,351.339996,351.339996,9051400 +2019-02-05,353.200012,360.000000,352.899994,355.809998,355.809998,9046600 +2019-02-06,357.000000,357.040009,347.190002,352.190002,352.190002,6717700 +2019-02-07,347.899994,348.750000,339.019989,344.709991,344.709991,7864500 +2019-02-08,338.000000,348.000000,338.000000,347.570007,347.570007,7561400 +2019-02-11,350.000000,352.869995,344.809998,345.730011,345.730011,5454900 +2019-02-12,348.089996,360.000000,346.519989,359.970001,359.970001,10429400 +2019-02-13,357.299988,359.600006,350.279999,351.769989,351.769989,10559100 +2019-02-14,351.750000,360.450012,348.329987,359.070007,359.070007,9295300 +2019-02-15,358.470001,364.399994,355.500000,356.869995,356.869995,9230000 +2019-02-19,355.799988,365.000000,355.320007,361.920013,361.920013,7396600 +2019-02-20,364.850006,366.709991,356.700012,359.910004,359.910004,8110700 +2019-02-21,360.029999,362.850006,353.880005,356.970001,356.970001,6227900 +2019-02-22,360.339996,366.130005,360.049988,363.019989,363.019989,7088200 +2019-02-25,367.010010,371.489990,363.790009,363.910004,363.910004,7569300 +2019-02-26,362.980011,365.700012,359.329987,364.970001,364.970001,4944600 +2019-02-27,363.500000,368.029999,359.799988,362.869995,362.869995,5629900 +2019-02-28,362.470001,366.390015,357.709991,358.100006,358.100006,6186800 +2019-03-01,362.260010,362.869995,354.690002,357.320007,357.320007,5526500 +2019-03-04,359.720001,362.250000,348.040009,351.040009,351.040009,7487000 +2019-03-05,351.459991,356.170013,348.250000,354.299988,354.299988,5937800 +2019-03-06,353.600006,359.880005,351.700012,359.609985,359.609985,6211900 +2019-03-07,360.160004,362.859985,350.500000,352.600006,352.600006,6151300 +2019-03-08,345.750000,349.920013,342.470001,349.600006,349.600006,6898800 +2019-03-11,352.000000,358.980011,350.029999,358.859985,358.859985,5387300 +2019-03-12,359.369995,360.130005,353.799988,356.269989,356.269989,5164600 +2019-03-13,355.809998,362.480011,352.769989,361.209991,361.209991,6444100 +2019-03-14,360.500000,363.839996,358.100006,358.820007,358.820007,5271400 +2019-03-15,361.019989,364.000000,358.890015,361.459991,361.459991,8444500 +2019-03-18,362.470001,370.970001,361.859985,363.440002,363.440002,7194700 +2019-03-19,366.399994,366.959991,356.799988,358.779999,358.779999,7541400 +2019-03-20,358.910004,375.899994,357.010010,375.220001,375.220001,10917200 +2019-03-21,374.000000,379.000000,370.609985,377.869995,377.869995,8544000 +2019-03-22,375.950012,376.429993,360.040009,361.010010,361.010010,8661300 +2019-03-25,359.000000,367.040009,357.440002,366.230011,366.230011,8473800 +2019-03-26,367.869995,368.380005,358.019989,359.970001,359.970001,7666500 +2019-03-27,361.000000,362.470001,350.369995,353.369995,353.369995,7852400 +2019-03-28,354.489990,355.940002,349.200012,354.609985,354.609985,4361000 +2019-03-29,357.160004,358.250000,353.709991,356.559998,356.559998,4705600 +2019-04-01,359.000000,368.329987,358.510010,366.959991,366.959991,7036100 +2019-04-02,366.250000,368.420013,362.220001,367.720001,367.720001,5158700 +2019-04-03,369.260010,373.410004,366.190002,369.750000,369.750000,5368900 +2019-04-04,370.070007,372.049988,362.399994,367.880005,367.880005,4627300 +2019-04-05,369.000000,369.799988,364.660004,365.489990,365.489990,3905500 +2019-04-08,365.109985,365.940002,359.929993,361.410004,361.410004,4653800 +2019-04-09,360.540009,366.739990,359.000000,364.709991,364.709991,5439200 +2019-04-10,365.790009,368.850006,362.250000,363.920013,363.920013,4545600 +2019-04-11,365.000000,370.119995,360.809998,367.649994,367.649994,6526900 +2019-04-12,360.690002,361.750000,349.359985,351.140015,351.140015,15646200 +2019-04-15,350.709991,352.209991,342.269989,348.869995,348.869995,8842300 +2019-04-16,355.000000,364.480011,352.720001,359.459991,359.459991,18740200 +2019-04-17,365.049988,368.760010,350.600006,354.739990,354.739990,18054100 +2019-04-18,355.000000,360.410004,351.640015,360.350006,360.350006,8353200 +2019-04-22,359.700012,377.690002,359.000000,377.339996,377.339996,11980500 +2019-04-23,375.450012,384.799988,374.709991,381.890015,381.890015,10089800 +2019-04-24,381.070007,381.899994,373.269989,374.230011,374.230011,6541900 +2019-04-25,374.489990,374.760010,365.700012,368.329987,368.329987,6255500 +2019-04-26,368.350006,375.140015,366.239990,374.850006,374.850006,5621900 +2019-04-29,373.679993,374.579987,369.119995,371.829987,371.829987,3821700 +2019-04-30,369.559998,374.500000,368.350006,370.540009,370.540009,3870100 +2019-05-01,374.000000,385.989990,373.170013,378.809998,378.809998,9257300 +2019-05-02,378.000000,383.500000,374.510010,379.059998,379.059998,5398200 +2019-05-03,381.529999,385.029999,378.269989,385.029999,385.029999,5130300 +2019-05-06,377.690002,381.350006,376.000000,378.670013,378.670013,5793100 +2019-05-07,377.000000,379.910004,365.809998,370.459991,370.459991,6974900 +2019-05-08,367.920013,369.000000,361.359985,364.369995,364.369995,6572000 +2019-05-09,360.899994,364.200012,352.750000,362.750000,362.750000,5882600 +2019-05-10,361.619995,365.260010,353.059998,361.040009,361.040009,5657100 +2019-05-13,352.290009,354.260010,343.100006,345.260010,345.260010,8026700 +2019-05-14,348.709991,349.950012,342.500000,345.609985,345.609985,5353000 +2019-05-15,343.339996,356.500000,341.390015,354.989990,354.989990,6340100 +2019-05-16,356.369995,364.000000,353.940002,359.309998,359.309998,6441500 +2019-05-17,356.390015,359.619995,353.790009,354.450012,354.450012,4725400 +2019-05-20,351.230011,352.420013,345.399994,348.109985,348.109985,4621500 +2019-05-21,350.950012,356.429993,349.929993,354.269989,354.269989,4026400 +2019-05-22,358.010010,370.459991,357.299988,359.730011,359.730011,6229400 +2019-05-23,355.500000,357.420013,347.700012,352.209991,352.209991,5630400 +2019-05-24,355.410004,359.440002,353.790009,354.390015,354.390015,3831000 +2019-05-28,354.390015,361.200012,353.649994,355.059998,355.059998,4717100 +2019-05-29,353.600006,353.850006,345.899994,349.190002,349.190002,5658900 +2019-05-30,350.549988,354.209991,348.299988,351.850006,351.850006,4008000 +2019-05-31,347.220001,349.339996,342.920013,343.279999,343.279999,5023400 +2019-06-03,343.559998,347.660004,332.649994,336.630005,336.630005,7849600 +2019-06-04,345.000000,353.609985,343.250000,353.399994,353.399994,7891600 +2019-06-05,354.380005,357.880005,348.709991,355.730011,355.730011,5020100 +2019-06-06,354.839996,358.209991,352.089996,357.130005,357.130005,3710000 +2019-06-07,357.390015,365.149994,355.690002,360.869995,360.869995,4777300 +2019-06-10,363.649994,367.100006,349.290009,352.010010,352.010010,7810300 +2019-06-11,355.000000,357.579987,348.500000,351.269989,351.269989,5396700 +2019-06-12,351.820007,353.609985,343.230011,345.559998,345.559998,4584700 +2019-06-13,347.230011,348.500000,339.250000,343.429993,343.429993,6209300 +2019-06-14,341.630005,343.399994,336.160004,339.730011,339.730011,5019000 +2019-06-17,342.690002,351.769989,342.059998,350.619995,350.619995,5358200 +2019-06-18,355.570007,361.500000,353.750000,357.119995,357.119995,5428500 +2019-06-19,361.720001,364.739990,356.119995,363.519989,363.519989,5667200 +2019-06-20,365.910004,370.119995,361.220001,365.209991,365.209991,5899500 +2019-06-21,365.000000,371.450012,365.000000,369.209991,369.209991,7448400 +2019-06-24,370.269989,375.000000,370.200012,371.040009,371.040009,4830200 +2019-06-25,370.750000,371.000000,358.290009,360.299988,360.299988,5750400 +2019-06-26,361.600006,366.790009,361.600006,362.200012,362.200012,3669700 +2019-06-27,363.200012,370.850006,363.200012,370.019989,370.019989,4138600 +2019-06-28,370.260010,371.540009,364.869995,367.320007,367.320007,4592700 +2019-07-01,373.500000,376.660004,372.000000,374.600006,374.600006,4992600 +2019-07-02,374.890015,376.000000,370.309998,375.429993,375.429993,3625000 +2019-07-03,376.690002,381.989990,375.839996,381.720001,381.720001,3799000 +2019-07-05,378.290009,381.399994,375.559998,380.549988,380.549988,3732200 +2019-07-08,378.190002,378.250000,375.359985,376.160004,376.160004,3113400 +2019-07-09,379.059998,384.760010,377.500000,379.929993,379.929993,6932800 +2019-07-10,382.769989,384.339996,362.679993,381.000000,381.000000,5878800 +2019-07-11,381.100006,384.540009,378.799988,379.500000,379.500000,4336300 +2019-07-12,378.679993,379.739990,372.790009,373.250000,373.250000,6636900 +2019-07-15,372.940002,373.679993,362.299988,366.600006,366.600006,7944700 +2019-07-16,370.089996,371.339996,364.920013,365.989990,365.989990,5863200 +2019-07-17,366.250000,366.500000,361.750000,362.440002,362.440002,13639500 +2019-07-18,323.760010,329.850006,320.299988,325.209991,325.209991,31287100 +2019-07-19,323.399994,325.850006,314.230011,315.100006,315.100006,16302500 +2019-07-22,312.000000,314.540009,305.809998,310.619995,310.619995,17718000 +2019-07-23,311.440002,313.500000,306.000000,307.299988,307.299988,9171100 +2019-07-24,310.510010,319.989990,307.250000,317.940002,317.940002,11961800 +2019-07-25,318.859985,327.690002,316.299988,326.459991,326.459991,10798500 +2019-07-26,328.790009,336.000000,327.500000,335.779999,335.779999,10847500 +2019-07-29,335.980011,336.399994,328.769989,332.700012,332.700012,5782800 +2019-07-30,329.200012,329.649994,323.230011,325.929993,325.929993,6029300 +2019-07-31,325.160004,331.769989,318.529999,322.989990,322.989990,6259500 +2019-08-01,324.250000,328.579987,318.739990,319.500000,319.500000,6563200 +2019-08-02,317.489990,319.410004,311.799988,318.829987,318.829987,6280300 +2019-08-05,310.959991,313.420013,304.679993,307.630005,307.630005,8692500 +2019-08-06,310.579987,311.880005,305.299988,310.100006,310.100006,6179100 +2019-08-07,302.559998,305.000000,296.809998,304.290009,304.290009,9322400 +2019-08-08,311.029999,316.359985,306.630005,315.899994,315.899994,5905900 +2019-08-09,313.739990,316.640015,305.679993,308.929993,308.929993,5349100 +2019-08-12,305.459991,312.890015,303.239990,310.829987,310.829987,6531700 +2019-08-13,309.769989,316.429993,308.160004,312.279999,312.279999,5289400 +2019-08-14,308.010010,308.410004,298.010010,299.109985,299.109985,7355800 +2019-08-15,299.500000,300.630005,288.000000,295.760010,295.760010,9629200 +2019-08-16,298.859985,303.549988,296.269989,302.799988,302.799988,6905800 +2019-08-19,306.250000,311.750000,304.750000,309.380005,309.380005,4942200 +2019-08-20,304.570007,305.000000,297.679993,298.989990,298.989990,7349900 +2019-08-21,301.609985,302.880005,296.200012,297.809998,297.809998,5685400 +2019-08-22,298.649994,300.329987,293.149994,296.929993,296.929993,4974200 +2019-08-23,295.000000,299.010010,290.320007,291.440002,291.440002,6324900 +2019-08-26,295.239990,296.950012,292.500000,294.980011,294.980011,4695700 +2019-08-27,294.540009,296.769989,287.200012,291.029999,291.029999,6309400 +2019-08-28,289.470001,292.820007,287.750000,291.769989,291.769989,3955700 +2019-08-29,295.000000,299.929993,294.989990,296.779999,296.779999,4388500 +2019-08-30,298.779999,298.940002,290.850006,293.750000,293.750000,4446400 +2019-09-03,290.820007,293.899994,288.059998,289.290009,289.290009,3682800 +2019-09-04,291.250000,292.380005,286.510010,291.519989,291.519989,4652500 +2019-09-05,285.320007,293.970001,282.790009,293.250000,293.250000,8966800 +2019-09-06,293.350006,293.350006,287.029999,290.170013,290.170013,5166600 +2019-09-09,294.809998,301.549988,290.600006,294.339996,294.339996,8232700 +2019-09-10,291.160004,297.170013,282.660004,287.989990,287.989990,12320200 +2019-09-11,285.700012,292.649994,284.609985,288.269989,288.269989,7405900 +2019-09-12,288.100006,292.730011,286.600006,288.859985,288.859985,5010900 +2019-09-13,290.609985,296.619995,290.040009,294.149994,294.149994,6583100 +2019-09-16,294.230011,297.429993,289.779999,294.290009,294.290009,5307400 +2019-09-17,294.500000,299.149994,291.790009,298.600006,298.600006,4777100 +2019-09-18,294.989990,296.049988,287.450012,291.559998,291.559998,7811100 +2019-09-19,291.559998,293.809998,283.399994,286.600006,286.600006,8461300 +2019-09-20,280.260010,282.500000,266.000000,270.750000,270.750000,23832800 +2019-09-23,268.350006,273.390015,261.890015,265.920013,265.920013,13478600 +2019-09-24,262.500000,265.000000,252.279999,254.589996,254.589996,16338200 +2019-09-25,255.710007,266.600006,253.699997,264.750000,264.750000,11643800 +2019-09-26,266.420013,268.049988,260.200012,263.309998,263.309998,7684000 +2019-09-27,266.179993,267.440002,260.390015,263.079987,263.079987,7328300 +2019-09-30,264.000000,268.880005,262.779999,267.619995,267.619995,6727200 +2019-10-01,267.350006,272.200012,264.029999,269.579987,269.579987,8650300 +2019-10-02,263.609985,269.350006,262.190002,268.029999,268.029999,7659100 +2019-10-03,267.779999,268.839996,257.010010,268.149994,268.149994,8951000 +2019-10-04,268.200012,275.480011,266.470001,272.790009,272.790009,9890400 +2019-10-07,271.989990,276.679993,271.279999,274.459991,274.459991,6525600 +2019-10-08,273.029999,275.529999,270.640015,270.720001,270.720001,6276400 +2019-10-09,270.019989,271.000000,264.570007,267.529999,267.529999,6794400 +2019-10-10,265.970001,280.529999,265.029999,280.480011,280.480011,10809100 +2019-10-11,284.799988,287.869995,282.339996,282.929993,282.929993,8786100 +2019-10-14,283.929993,286.929993,282.000000,285.529999,285.529999,5513200 +2019-10-15,283.820007,285.869995,279.399994,284.250000,284.250000,7685600 +2019-10-16,283.119995,288.170013,280.739990,286.279999,286.279999,16175900 +2019-10-17,304.489990,308.750000,288.299988,293.350006,293.350006,38258900 +2019-10-18,289.359985,290.899994,273.359985,275.299988,275.299988,23429900 +2019-10-21,272.890015,279.940002,269.000000,278.049988,278.049988,12599200 +2019-10-22,271.160004,275.410004,265.799988,266.690002,266.690002,11802400 +2019-10-23,268.059998,273.920013,266.630005,271.269989,271.269989,7133500 +2019-10-24,271.809998,274.019989,268.799988,271.500000,271.500000,4827400 +2019-10-25,270.679993,277.769989,270.179993,276.820007,276.820007,4747800 +2019-10-28,278.049988,285.750000,277.350006,281.859985,281.859985,6248400 +2019-10-29,281.869995,284.410004,277.549988,281.209991,281.209991,4356200 +2019-10-30,284.339996,293.489990,283.000000,291.450012,291.450012,9345600 +2019-10-31,291.000000,291.450012,284.779999,287.410004,287.410004,5090000 +2019-11-01,288.700012,289.119995,283.019989,286.809998,286.809998,5594300 +2019-11-04,288.000000,295.390015,287.160004,292.859985,292.859985,5566200 +2019-11-05,289.989990,291.190002,286.309998,288.029999,288.029999,4062400 +2019-11-06,288.190002,290.559998,285.839996,288.589996,288.589996,3438300 +2019-11-07,290.700012,298.190002,288.269989,289.570007,289.570007,5928500 +2019-11-08,288.730011,293.989990,287.510010,291.570007,291.570007,4509000 +2019-11-11,289.160004,296.359985,288.500000,294.179993,294.179993,3944300 +2019-11-12,295.320007,295.350006,288.700012,292.010010,292.010010,5772800 +2019-11-13,291.029999,293.410004,281.140015,283.109985,283.109985,9158900 +2019-11-14,283.250000,290.630005,283.220001,289.619995,289.619995,6529000 +2019-11-15,290.589996,295.820007,287.570007,295.029999,295.029999,6333800 +2019-11-18,296.000000,304.989990,293.279999,302.570007,302.570007,8616600 +2019-11-19,304.010010,305.670013,298.519989,302.600006,302.600006,5918000 +2019-11-20,301.010010,308.250000,301.000000,305.160004,305.160004,5111800 +2019-11-21,306.000000,312.690002,304.260010,311.690002,311.690002,7488400 +2019-11-22,309.100006,311.399994,304.410004,310.480011,310.480011,5970100 +2019-11-25,308.829987,315.730011,305.250000,315.549988,315.549988,7873900 +2019-11-26,315.000000,316.500000,311.690002,312.489990,312.489990,5321000 +2019-11-27,313.929993,316.820007,312.750000,315.929993,315.929993,4096900 +2019-11-29,315.779999,316.619995,313.339996,314.660004,314.660004,2411700 +2019-12-02,314.390015,314.390015,303.750000,309.989990,309.989990,6218800 +2019-12-03,302.220001,307.359985,301.880005,306.160004,306.160004,4992800 +2019-12-04,308.429993,308.429993,303.269989,304.320007,304.320007,3512100 +2019-12-05,305.269989,306.480011,298.809998,302.859985,302.859985,4615500 +2019-12-06,304.700012,307.850006,302.600006,307.350006,307.350006,4457800 +2019-12-09,307.350006,311.489990,302.440002,302.500000,302.500000,5748400 +2019-12-10,296.119995,298.940002,292.019989,293.119995,293.119995,10476100 +2019-12-11,294.489990,299.429993,294.200012,298.929993,298.929993,5589800 +2019-12-12,295.670013,299.170013,295.059998,298.440002,298.440002,4766600 +2019-12-13,298.500000,301.799988,297.250000,298.500000,298.500000,3879700 +2019-12-16,300.850006,305.709991,298.630005,304.209991,304.209991,4658900 +2019-12-17,307.359985,316.799988,306.600006,315.480011,315.480011,10427100 +2019-12-18,316.260010,325.359985,315.600006,320.799988,320.799988,11207400 +2019-12-19,324.500000,332.829987,324.179993,332.220001,332.220001,9822300 +2019-12-20,335.000000,338.000000,330.600006,336.899994,336.899994,9914900 +2019-12-23,337.760010,337.950012,331.019989,333.100006,333.100006,5765300 +2019-12-24,334.010010,335.700012,331.600006,333.200012,333.200012,2019300 +2019-12-26,334.600006,336.459991,332.010010,332.630005,332.630005,3589900 +2019-12-27,332.959991,333.820007,326.010010,329.089996,329.089996,5036100 +2019-12-30,329.079987,329.190002,322.859985,323.309998,323.309998,4311500 +2019-12-31,322.000000,324.920013,321.089996,323.570007,323.570007,3713300 +2020-01-02,326.100006,329.980011,324.779999,329.809998,329.809998,4485800 +2020-01-03,326.779999,329.859985,325.529999,325.899994,325.899994,3806900 +2020-01-06,323.119995,336.359985,321.200012,335.829987,335.829987,5663100 +2020-01-07,336.470001,336.700012,330.299988,330.750000,330.750000,4703200 +2020-01-08,331.489990,342.700012,331.049988,339.260010,339.260010,7104500 +2020-01-09,342.000000,343.420013,334.609985,335.660004,335.660004,4709300 +2020-01-10,337.130005,338.500000,327.269989,329.049988,329.049988,4718300 +2020-01-13,331.799988,340.850006,331.510010,338.920013,338.920013,6290000 +2020-01-14,344.399994,345.380005,335.519989,338.690002,338.690002,7199400 +2020-01-15,338.679993,343.170013,336.600006,339.070007,339.070007,5158000 +2020-01-16,343.500000,343.559998,335.850006,338.619995,338.619995,5016000 +2020-01-17,341.000000,341.570007,337.380005,339.670013,339.670013,6066500 +2020-01-21,340.000000,341.000000,332.589996,338.109985,338.109985,14350300 +2020-01-22,332.549988,336.299988,323.600006,326.000000,326.000000,21730000 +2020-01-23,326.040009,349.880005,325.010010,349.600006,349.600006,18200300 +2020-01-24,348.459991,359.850006,345.880005,353.160004,353.160004,17939700 +2020-01-27,345.950012,351.899994,341.019989,342.880005,342.880005,7709500 +2020-01-28,345.880005,352.399994,342.779999,348.519989,348.519989,6821600 +2020-01-29,349.000000,349.399994,338.549988,343.160004,343.160004,7643500 +2020-01-30,341.100006,348.200012,339.250000,347.739990,347.739990,5328100 +2020-01-31,347.390015,347.390015,340.980011,345.089996,345.089996,5230000 +2020-02-03,347.239990,359.630005,346.279999,358.000000,358.000000,6670600 +2020-02-04,361.000000,369.570007,356.100006,369.010010,369.010010,7161500 +2020-02-05,375.130005,375.250000,362.299988,369.670013,369.670013,6437000 +2020-02-06,369.600006,371.549988,362.510010,366.950012,366.950012,3920400 +2020-02-07,365.040009,371.799988,363.570007,366.769989,366.769989,4385200 +2020-02-10,365.000000,374.799988,362.519989,371.070007,371.070007,5294100 +2020-02-11,373.750000,378.109985,369.720001,373.690002,373.690002,4772900 +2020-02-12,377.179993,380.619995,375.880005,380.010010,380.010010,4624800 +2020-02-13,376.959991,385.369995,376.510010,381.399994,381.399994,4485400 +2020-02-14,381.470001,385.149994,379.429993,380.399994,380.399994,3736300 +2020-02-18,379.299988,389.540009,379.190002,387.779999,387.779999,5173900 +2020-02-19,388.119995,392.950012,384.899994,386.190002,386.190002,4896400 +2020-02-20,386.559998,389.700012,376.679993,386.000000,386.000000,4079400 +2020-02-21,385.329987,387.320007,377.899994,380.070007,380.070007,3930100 +2020-02-24,364.760010,372.820007,361.000000,368.700012,368.700012,6936400 +2020-02-25,372.000000,375.649994,357.720001,360.089996,360.089996,6481200 +2020-02-26,366.309998,382.000000,365.000000,379.239990,379.239990,8934100 +2020-02-27,371.459991,391.559998,370.600006,371.709991,371.709991,10967700 +2020-02-28,364.209991,376.769989,356.799988,369.029999,369.029999,11168600 +2020-03-02,373.109985,381.359985,364.500000,381.049988,381.049988,6997900 +2020-03-03,381.029999,393.519989,367.399994,368.769989,368.769989,8364600 +2020-03-04,377.769989,384.010010,370.510010,383.790009,383.790009,5487300 +2020-03-05,381.000000,391.399994,368.640015,372.779999,372.779999,8747000 +2020-03-06,367.700012,371.309998,356.850006,368.970001,368.970001,8147200 +2020-03-09,343.859985,357.470001,341.720001,346.489990,346.489990,7405500 +2020-03-10,356.429993,364.540009,347.850006,364.130005,364.130005,7604400 +2020-03-11,358.920013,362.980011,344.790009,349.920013,349.920013,6036000 +2020-03-12,326.500000,335.720001,307.320007,315.250000,315.250000,12071600 +2020-03-13,330.510010,336.420013,307.390015,336.299988,336.299988,9458200 +2020-03-16,306.630005,334.350006,294.750000,298.839996,298.839996,10559900 +2020-03-17,306.190002,322.899994,290.250000,319.750000,319.750000,10013900 +2020-03-18,302.399994,331.579987,300.000000,315.470001,315.470001,12593600 +2020-03-19,324.329987,348.510010,316.820007,332.029999,332.029999,10616000 +2020-03-20,342.309998,350.489990,332.000000,332.829987,332.829987,10853800 +2020-03-23,347.890015,366.109985,340.880005,360.269989,360.269989,13449400 +2020-03-24,369.989990,372.929993,353.029999,357.320007,357.320007,11638700 +2020-03-25,361.019989,362.000000,339.170013,342.390015,342.390015,8767200 +2020-03-26,344.000000,363.839996,341.730011,362.989990,362.989990,7229600 +2020-03-27,359.089996,368.559998,353.000000,357.119995,357.119995,7948800 +2020-03-30,363.000000,377.799988,361.170013,370.959991,370.959991,8622000 +2020-03-31,367.929993,383.010010,366.440002,375.500000,375.500000,9366500 +2020-04-01,376.049988,380.230011,361.019989,364.079987,364.079987,6672500 +2020-04-02,364.079987,370.989990,360.059998,370.079987,370.079987,4592500 +2020-04-03,367.470001,370.899994,357.510010,361.760010,361.760010,4860800 +2020-04-06,365.220001,380.290009,361.709991,379.959991,379.959991,8183900 +2020-04-07,380.000000,381.329987,369.339996,372.279999,372.279999,7046400 +2020-04-08,374.010010,378.390015,368.309998,371.119995,371.119995,6908900 +2020-04-09,371.059998,372.100006,363.029999,370.720001,370.720001,7711300 +2020-04-13,371.309998,400.510010,367.700012,396.720001,396.720001,11692900 +2020-04-14,397.500000,417.820007,394.850006,413.549988,413.549988,11581000 +2020-04-15,413.000000,434.980011,412.250000,426.750000,426.750000,13561200 +2020-04-16,437.000000,449.519989,431.609985,439.170013,439.170013,16128700 +2020-04-17,431.000000,432.000000,414.700012,422.959991,422.959991,12616300 +2020-04-20,435.170013,444.489990,430.559998,437.489990,437.489990,12655800 +2020-04-21,444.769989,447.000000,425.600006,433.829987,433.829987,23177600 +2020-04-22,429.730011,433.000000,413.000000,421.420013,421.420013,21084800 +2020-04-23,419.260010,438.410004,419.260010,426.700012,426.700012,13952300 +2020-04-24,425.000000,427.170013,415.880005,424.989990,424.989990,8658900 +2020-04-27,425.000000,429.000000,420.839996,421.380005,421.380005,6277500 +2020-04-28,419.989990,421.000000,402.910004,403.829987,403.829987,10101200 +2020-04-29,399.529999,415.859985,393.600006,411.890015,411.890015,9693100 +2020-04-30,410.309998,424.440002,408.000000,419.850006,419.850006,7954000 +2020-05-01,415.100006,427.970001,411.730011,415.269989,415.269989,8299900 +2020-05-04,417.779999,428.540009,414.869995,428.149994,428.149994,7799100 +2020-05-05,427.559998,431.000000,421.559998,424.679993,424.679993,6286300 +2020-05-06,429.299988,439.769989,426.390015,434.260010,434.260010,6660700 +2020-05-07,436.890015,438.880005,430.660004,436.529999,436.529999,5641900 +2020-05-08,434.140015,442.000000,433.640015,435.549988,435.549988,5049300 +2020-05-11,436.329987,444.890015,435.559998,440.519989,440.519989,5486000 +2020-05-12,442.000000,444.170013,431.359985,431.820007,431.820007,4598200 +2020-05-13,435.690002,447.000000,427.269989,438.269989,438.269989,7014600 +2020-05-14,444.899994,452.380005,432.820007,441.950012,441.950012,9007500 +2020-05-15,440.700012,455.000000,437.510010,454.190002,454.190002,7244000 +2020-05-18,451.160004,456.359985,443.350006,452.579987,452.579987,7773500 +2020-05-19,453.399994,458.970001,450.470001,451.040009,451.040009,4810500 +2020-05-20,454.250000,455.809998,444.000000,447.670013,447.670013,5607300 +2020-05-21,448.559998,448.959991,430.250000,436.250000,436.250000,9117300 +2020-05-22,437.000000,439.089996,427.179993,429.320007,429.320007,5422300 +2020-05-26,427.769989,428.500000,413.140015,414.769989,414.769989,7881100 +2020-05-27,410.380005,420.019989,397.859985,419.890015,419.890015,10446300 +2020-05-28,417.239990,422.369995,411.500000,413.440002,413.440002,5655100 +2020-05-29,417.459991,420.299988,411.850006,419.730011,419.730011,5254900 +2020-06-01,418.829987,426.720001,415.980011,425.920013,425.920013,3743700 +2020-06-02,425.869995,427.589996,419.459991,427.309998,427.309998,3494800 +2020-06-03,426.950012,427.100006,418.049988,421.970001,421.970001,4316000 +2020-06-04,422.390015,428.709991,410.029999,414.329987,414.329987,5410500 +2020-06-05,407.290009,420.239990,404.250000,419.600006,419.600006,5099600 +2020-06-08,416.000000,420.799988,406.500000,419.489990,419.489990,5851500 +2020-06-09,421.649994,434.730011,420.309998,434.049988,434.049988,6797000 +2020-06-10,436.000000,439.690002,430.549988,434.480011,434.480011,4896900 +2020-06-11,428.200012,445.570007,424.160004,425.559998,425.559998,7462900 +2020-06-12,429.000000,434.059998,412.450012,418.070007,418.070007,6461100 +2020-06-15,421.399994,426.489990,415.420013,425.500000,425.500000,4467900 +2020-06-16,425.760010,437.959991,425.179993,436.130005,436.130005,5507900 +2020-06-17,441.820007,450.459991,439.220001,447.769989,447.769989,6529600 +2020-06-18,448.730011,452.760010,442.799988,449.869995,449.869995,4277600 +2020-06-19,449.119995,453.970001,445.600006,453.720001,453.720001,5934500 +2020-06-22,455.010010,468.589996,454.209991,468.040009,468.040009,6272100 +2020-06-23,466.500000,474.010010,464.500000,466.260010,466.260010,5948400 +2020-06-24,468.540009,472.359985,454.000000,457.850006,457.850006,4826200 +2020-06-25,458.859985,467.010010,454.000000,465.910004,465.910004,4134500 +2020-06-26,466.390015,468.029999,442.239990,443.399994,443.399994,6804700 +2020-06-29,445.230011,447.670013,432.140015,447.239990,447.239990,4844000 +2020-06-30,450.019989,457.589996,447.000000,455.040009,455.040009,4198500 +2020-07-01,454.000000,488.230011,454.000000,485.640015,485.640015,9705900 +2020-07-02,485.640015,492.279999,475.529999,476.890015,476.890015,6351500 +2020-07-06,480.769989,499.500000,479.799988,493.809998,493.809998,7839000 +2020-07-07,497.309998,504.820007,490.829987,493.160004,493.160004,5669900 +2020-07-08,498.579987,505.100006,493.809998,502.779999,502.779999,5691700 +2020-07-09,508.399994,510.000000,495.779999,507.760010,507.760010,5840500 +2020-07-10,519.729980,555.880005,511.279999,548.729980,548.729980,21605600 +2020-07-13,567.979980,575.369995,520.960022,525.500000,525.500000,18399000 +2020-07-14,517.080017,525.500000,490.489990,524.880005,524.880005,15083300 +2020-07-15,516.299988,529.000000,510.179993,523.260010,523.260010,10066700 +2020-07-16,526.479980,535.539978,504.359985,527.390015,527.390015,24499000 +2020-07-17,494.869995,503.589996,484.140015,492.989990,492.989990,24991400 +2020-07-20,489.140015,504.500000,484.200012,502.410004,502.410004,11940300 +2020-07-21,506.000000,506.220001,488.609985,490.100006,490.100006,9113700 +2020-07-22,492.190002,497.200012,487.200012,489.820007,489.820007,6954100 +2020-07-23,491.130005,491.899994,472.019989,477.579987,477.579987,7722000 +2020-07-24,468.769989,487.170013,467.540009,480.450012,480.450012,7746200 +2020-07-27,484.510010,496.920013,482.309998,495.649994,495.649994,7863100 +2020-07-28,496.019989,497.790009,487.760010,488.510010,488.510010,5986700 +2020-07-29,492.250000,494.920013,484.130005,484.480011,484.480011,6611800 +2020-07-30,480.709991,488.350006,477.510010,485.799988,485.799988,6608600 +2020-07-31,488.290009,494.799988,484.500000,488.880005,488.880005,5916300 +2020-08-03,490.859985,503.089996,490.230011,498.619995,498.619995,5873100 +2020-08-04,498.649994,510.440002,498.649994,509.640015,509.640015,5608000 +2020-08-05,508.679993,510.100006,501.200012,502.109985,502.109985,4308200 +2020-08-06,504.109985,510.820007,498.700012,509.079987,509.079987,3725900 +2020-08-07,505.450012,508.290009,486.679993,494.730011,494.730011,5910300 +2020-08-10,493.350006,497.459991,478.630005,483.380005,483.380005,4691200 +2020-08-11,479.750000,480.920013,466.549988,466.929993,466.929993,7329200 +2020-08-12,471.339996,482.489990,470.179993,475.470001,475.470001,5439200 +2020-08-13,478.399994,484.450012,476.450012,481.329987,481.329987,3008900 +2020-08-14,482.820007,488.329987,480.209991,482.679993,482.679993,2943500 +2020-08-17,484.190002,486.239990,479.100006,482.350006,482.350006,2423500 +2020-08-18,484.350006,495.299988,482.799988,491.869995,491.869995,3505500 +2020-08-19,493.929993,494.500000,483.500000,484.529999,484.529999,3156200 +2020-08-20,484.690002,498.940002,483.890015,497.899994,497.899994,5132500 +2020-08-21,496.459991,498.130005,490.000000,492.309998,492.309998,3921300 +2020-08-24,495.440002,501.000000,483.160004,488.809998,488.809998,4762200 +2020-08-25,488.190002,492.470001,485.089996,490.579987,490.579987,5727700 +2020-08-26,492.500000,549.039978,492.079987,547.530029,547.530029,20373700 +2020-08-27,537.780029,541.000000,521.250000,526.270020,526.270020,9062900 +2020-08-28,532.000000,539.000000,522.000000,523.890015,523.890015,4417500 +2020-08-31,521.159973,531.989990,517.580017,529.559998,529.559998,4941400 +2020-09-01,532.599976,557.390015,532.450012,556.549988,556.549988,9572700 +2020-09-02,553.780029,556.500000,537.369995,552.840027,552.840027,5886900 +2020-09-03,545.000000,554.000000,521.320007,525.750000,525.750000,9071100 +2020-09-04,520.179993,527.359985,485.980011,516.049988,516.049988,8270100 +2020-09-08,498.399994,522.000000,495.000000,507.019989,507.019989,5572700 +2020-09-09,519.210022,520.000000,492.570007,500.190002,500.190002,6848100 +2020-09-10,503.350006,506.290009,478.839996,480.670013,480.670013,6240200 +2020-09-11,486.489990,493.730011,476.809998,482.029999,482.029999,5035200 +2020-09-14,480.619995,488.989990,471.299988,476.260010,476.260010,7359100 +2020-09-15,484.000000,497.470001,481.630005,495.989990,495.989990,5337000 +2020-09-16,499.989990,504.660004,483.309998,483.859985,483.859985,4394900 +2020-09-17,475.160004,478.399994,463.269989,470.200012,470.200012,5379300 +2020-09-18,472.510010,479.399994,458.600006,469.959991,469.959991,6717700 +2020-09-21,467.690002,487.779999,466.320007,487.350006,487.350006,5457500 +2020-09-22,489.010010,491.820007,479.260010,491.170013,491.170013,3482300 +2020-09-23,491.040009,491.040009,469.000000,470.609985,470.609985,3726400 +2020-09-24,470.529999,477.000000,467.820007,473.079987,473.079987,3727200 +2020-09-25,474.390015,484.869995,468.029999,482.880005,482.880005,3769400 +2020-09-28,489.109985,492.000000,477.880005,490.649994,490.649994,4773500 +2020-09-29,489.500000,496.290009,486.529999,493.480011,493.480011,3541500 +2020-09-30,492.570007,504.630005,489.269989,500.029999,500.029999,4634100 +2020-10-01,506.029999,529.549988,503.600006,527.510010,527.510010,8153700 +2020-10-02,516.429993,526.369995,502.700012,503.059998,503.059998,6071200 +2020-10-05,506.799988,520.989990,501.700012,520.650024,520.650024,4088100 +2020-10-06,518.719971,521.820007,504.160004,505.869995,505.869995,4199000 +2020-10-07,518.000000,536.489990,515.820007,534.659973,534.659973,7988700 +2020-10-08,533.479980,535.000000,524.150024,531.789978,531.789978,5386500 +2020-10-09,537.830017,544.280029,535.000000,539.440002,539.440002,4781300 +2020-10-12,548.809998,551.809998,538.239990,539.809998,539.809998,5391100 +2020-10-13,540.559998,557.650024,537.200012,554.090027,554.090027,5602500 +2020-10-14,562.609985,572.489990,541.000000,541.450012,541.450012,9499000 +2020-10-15,545.520020,551.219971,535.099976,541.940002,541.940002,5113100 +2020-10-16,549.500000,554.330017,530.030029,530.789978,530.789978,6347400 +2020-10-19,537.070007,541.799988,525.380005,530.719971,530.719971,7567500 +2020-10-20,528.140015,533.780029,522.260010,525.419983,525.419983,10047200 +2020-10-21,501.029999,506.850006,488.250000,489.049988,489.049988,17405700 +2020-10-22,494.690002,495.140015,482.000000,485.230011,485.230011,6997900 +2020-10-23,488.109985,490.059998,481.350006,488.279999,488.279999,4927900 +2020-10-26,487.029999,496.820007,478.899994,488.239990,488.239990,6186100 +2020-10-27,490.010010,490.489990,482.929993,488.929993,488.929993,3627200 +2020-10-28,486.359985,494.000000,483.279999,486.239990,486.239990,5992700 +2020-10-29,488.500000,513.900024,479.339996,504.209991,504.209991,11120700 +2020-10-30,502.010010,505.880005,472.209991,475.739990,475.739990,7807900 +2020-11-02,478.869995,486.299988,475.000000,484.119995,484.119995,4408200 +2020-11-03,484.929993,495.309998,478.760010,487.220001,487.220001,3690200 +2020-11-04,495.359985,507.730011,493.980011,496.950012,496.950012,5137300 +2020-11-05,506.559998,518.729980,503.450012,513.760010,513.760010,5372800 +2020-11-06,515.000000,515.210022,502.510010,514.729980,514.729980,4236300 +2020-11-09,485.540009,495.850006,467.260010,470.500000,470.500000,10419700 +2020-11-10,470.950012,484.600006,463.410004,480.239990,480.239990,8306100 +2020-11-11,483.000000,491.679993,478.260010,490.760010,490.760010,5460500 +2020-11-12,491.000000,496.519989,480.429993,486.769989,486.769989,5063700 +2020-11-13,486.769989,488.940002,477.799988,482.839996,482.839996,3002700 +2020-11-16,480.000000,485.579987,477.299988,479.100006,479.100006,3953600 +2020-11-17,480.119995,487.510010,478.850006,480.630005,480.630005,3698100 +2020-11-18,481.950012,488.609985,477.720001,481.790009,481.790009,3629200 +2020-11-19,482.000000,487.799988,480.470001,484.670013,484.670013,2254700 +2020-11-20,485.220001,494.760010,481.570007,488.239990,488.239990,4253400 +2020-11-23,490.459991,491.149994,475.839996,476.619995,476.619995,5416600 +2020-11-24,478.839996,484.049988,475.890015,482.880005,482.880005,3550500 +2020-11-25,485.130005,486.899994,478.920013,485.000000,485.000000,3598600 +2020-11-27,486.579987,493.250000,481.850006,491.359985,491.359985,2805800 +2020-11-30,490.079987,492.549988,481.269989,490.700012,490.700012,3530900 +2020-12-01,492.339996,509.470001,491.980011,504.579987,504.579987,5052700 +2020-12-02,501.619995,506.799988,493.500000,503.380005,503.380005,3028400 +2020-12-03,502.989990,508.769989,496.040009,497.519989,497.519989,2826100 +2020-12-04,497.500000,504.500000,493.640015,498.309998,498.309998,3666200 +2020-12-07,500.010010,517.760010,497.769989,515.780029,515.780029,4289300 +2020-12-08,517.900024,521.489990,505.549988,512.659973,512.659973,4229000 +2020-12-09,510.529999,514.500000,491.290009,493.600006,493.600006,4178800 +2020-12-10,494.559998,503.769989,492.910004,501.089996,501.089996,3018200 +2020-12-11,495.000000,503.339996,494.850006,503.220001,503.220001,3210900 +2020-12-14,505.440002,524.159973,501.179993,522.419983,522.419983,5770400 +2020-12-15,518.500000,524.700012,513.559998,519.780029,519.780029,3394900 +2020-12-16,520.109985,527.380005,517.690002,524.830017,524.830017,3682400 +2020-12-17,529.000000,535.489990,526.440002,532.900024,532.900024,3193400 +2020-12-18,533.200012,536.369995,526.020020,534.450012,534.450012,4502700 +2020-12-21,530.049988,532.619995,521.150024,528.909973,528.909973,3894000 +2020-12-22,527.690002,530.400024,520.500000,527.330017,527.330017,1906600 +2020-12-23,524.760010,526.320007,514.200012,514.479980,514.479980,2393200 +2020-12-24,515.119995,519.349976,512.210022,513.969971,513.969971,1144000 +2020-12-28,516.429993,523.659973,507.130005,519.119995,519.119995,2891900 +2020-12-29,519.900024,536.549988,515.479980,530.869995,530.869995,4022400 +2020-12-30,530.130005,533.260010,523.690002,524.590027,524.590027,1876300 +2020-12-31,525.530029,545.500000,523.150024,540.729980,540.729980,5392300 +2021-01-04,539.000000,540.799988,515.090027,522.859985,522.859985,4444400 +2021-01-05,521.549988,526.780029,515.890015,520.799988,520.799988,3133900 +2021-01-06,511.970001,513.099976,499.500000,500.489990,500.489990,5346200 +2021-01-07,508.279999,516.440002,506.420013,508.890015,508.890015,3686400 +2021-01-08,511.309998,513.239990,504.510010,510.399994,510.399994,2973900 +2021-01-11,507.839996,510.730011,497.950012,499.100006,499.100006,3806200 +2021-01-12,500.000000,501.089996,485.670013,494.250000,494.250000,5990400 +2021-01-13,495.500000,512.349976,493.010010,507.790009,507.790009,5032100 +2021-01-14,507.350006,514.500000,499.579987,500.859985,500.859985,4177400 +2021-01-15,500.000000,506.320007,495.100006,497.980011,497.980011,5895800 +2021-01-19,501.000000,509.250000,493.540009,501.769989,501.769989,12315800 +2021-01-20,565.419983,593.289978,556.859985,586.340027,586.340027,32637500 +2021-01-21,582.450012,588.750000,570.400024,579.840027,579.840027,11802100 +2021-01-22,582.099976,583.989990,564.349976,565.169983,565.169983,7550800 +2021-01-25,567.000000,569.750000,548.650024,556.780029,556.780029,7207300 +2021-01-26,554.729980,567.989990,554.059998,561.929993,561.929993,5023800 +2021-01-27,550.710022,556.419983,515.729980,523.280029,523.280029,8670300 +2021-01-28,535.880005,553.150024,530.739990,538.599976,538.599976,5969000 +2021-01-29,538.000000,541.000000,530.179993,532.390015,532.390015,4325300 +2021-02-01,536.789978,545.059998,531.729980,539.039978,539.039978,3547500 +2021-02-02,542.010010,555.479980,538.929993,548.159973,548.159973,3767600 +2021-02-03,550.169983,550.479980,538.239990,539.450012,539.450012,3172300 +2021-02-04,539.809998,559.479980,537.510010,552.159973,552.159973,5164500 +2021-02-05,552.260010,554.440002,545.479980,550.789978,550.789978,2376200 +2021-02-08,555.000000,555.000000,543.700012,547.919983,547.919983,2791700 +2021-02-09,546.000000,566.000000,543.000000,559.070007,559.070007,3703500 +2021-02-10,562.500000,566.650024,553.460022,563.590027,563.590027,3991300 +2021-02-11,564.440002,565.929993,554.219971,557.590027,557.590027,2730600 +2021-02-12,556.940002,561.250000,550.849976,556.520020,556.520020,2197100 +2021-02-16,557.289978,563.630005,552.729980,557.280029,557.280029,2624100 +2021-02-17,550.989990,555.250000,543.030029,551.340027,551.340027,2069600 +2021-02-18,549.000000,550.000000,538.229980,548.219971,548.219971,2456200 +2021-02-19,548.000000,548.989990,538.809998,540.219971,540.219971,2841500 +2021-02-22,534.989990,541.789978,530.789978,533.780029,533.780029,3078600 +2021-02-23,525.000000,548.539978,518.280029,546.150024,546.150024,4136500 +2021-02-24,539.799988,556.849976,539.070007,553.409973,553.409973,3245000 +2021-02-25,550.270020,556.479980,535.750000,546.700012,546.700012,4252900 +2021-02-26,546.510010,553.090027,538.000000,538.849976,538.849976,3755600 +2021-03-01,545.570007,552.140015,542.000000,550.640015,550.640015,3041400 +2021-03-02,553.340027,556.989990,546.020020,547.820007,547.820007,3042200 +2021-03-03,545.929993,548.010010,517.809998,520.700012,520.700012,5362400 +2021-03-04,521.500000,531.500000,507.679993,511.290009,511.290009,5034800 +2021-03-05,511.980011,517.760010,498.790009,516.390015,516.390015,5070000 +2021-03-08,514.460022,518.840027,492.850006,493.329987,493.329987,3981800 +2021-03-09,507.309998,513.109985,503.820007,506.440002,506.440002,3470000 +2021-03-10,513.500000,518.969971,504.250000,504.540009,504.540009,3771500 +2021-03-11,512.200012,530.239990,510.709991,523.059998,523.059998,4714500 +2021-03-12,512.500000,526.510010,506.589996,518.020020,518.020020,3981700 +2021-03-15,516.320007,520.729980,508.029999,520.250000,520.250000,3484300 +2021-03-16,524.469971,533.419983,523.210022,524.030029,524.030029,3238900 +2021-03-17,522.000000,528.369995,514.299988,524.440002,524.440002,2817400 +2021-03-18,516.400024,517.900024,503.850006,504.790009,504.790009,4094500 +2021-03-19,504.959991,513.190002,501.630005,512.179993,512.179993,4386400 +2021-03-22,509.130005,529.309998,509.130005,523.109985,523.109985,3360600 +2021-03-23,529.869995,543.119995,529.400024,535.090027,535.090027,5583500 +2021-03-24,533.780029,534.419983,520.000000,520.809998,520.809998,4102200 +2021-03-25,516.989990,518.530029,497.000000,502.859985,502.859985,4926800 +2021-03-26,502.820007,508.720001,496.679993,508.049988,508.049988,3467800 +2021-03-29,505.660004,518.000000,504.399994,513.950012,513.950012,3330000 +2021-03-30,510.510010,514.409973,506.910004,513.390015,513.390015,2418100 +2021-03-31,515.669983,528.130005,515.440002,521.659973,521.659973,3503100 +2021-04-01,529.929993,540.500000,527.030029,539.419983,539.419983,3938600 +2021-04-05,540.010010,542.849976,529.229980,540.669983,540.669983,3355900 +2021-04-06,544.809998,554.169983,543.299988,544.530029,544.530029,3474200 +2021-04-07,543.500000,549.640015,541.450012,546.989990,546.989990,2151300 +2021-04-08,551.130005,556.900024,547.570007,554.580017,554.580017,4309800 +2021-04-09,552.690002,556.900024,547.109985,555.309998,555.309998,2894000 +2021-04-12,551.049988,557.979980,549.580017,552.780029,552.780029,2944100 +2021-04-13,557.000000,559.750000,550.299988,553.729980,553.729980,2720300 +2021-04-14,554.869995,554.869995,538.530029,540.020020,540.020020,3740300 +2021-04-15,544.169983,553.489990,542.659973,549.219971,549.219971,3139100 +2021-04-16,550.539978,551.979980,539.510010,546.539978,546.539978,3209100 +2021-04-19,546.900024,556.440002,545.530029,554.440002,554.440002,4288700 +2021-04-20,554.419983,563.559998,546.299988,549.570007,549.570007,11257600 +2021-04-21,508.000000,515.460022,503.600006,508.899994,508.899994,22897400 +2021-04-22,513.820007,513.960022,500.549988,508.779999,508.779999,9061100 +2021-04-23,509.010010,509.700012,500.700012,505.549988,505.549988,7307700 +2021-04-26,506.760010,510.480011,503.000000,510.299988,510.299988,4388800 +2021-04-27,512.619995,512.989990,504.579987,505.549988,505.549988,3761300 +2021-04-28,505.200012,508.399994,503.339996,506.519989,506.519989,3193000 +2021-04-29,507.600006,509.290009,499.000000,509.000000,509.000000,5127800 +2021-04-30,505.000000,514.549988,505.000000,513.469971,513.469971,4413200 +2021-05-03,512.650024,518.950012,505.200012,509.109985,509.109985,4091900 +2021-05-04,510.779999,511.630005,496.790009,503.179993,503.179993,4349500 +2021-05-05,504.989990,507.779999,494.630005,496.079987,496.079987,3129400 +2021-05-06,495.989990,499.549988,491.369995,499.549988,499.549988,3783700 +2021-05-07,504.619995,508.549988,501.119995,503.839996,503.839996,3132800 +2021-05-10,502.000000,503.149994,486.109985,486.690002,486.690002,5131600 +2021-05-11,479.750000,497.989990,478.630005,495.079987,495.079987,4401000 +2021-05-12,486.829987,493.540009,482.700012,484.980011,484.980011,4121500 +2021-05-13,489.130005,490.779999,482.709991,486.660004,486.660004,2712500 +2021-05-14,487.859985,494.850006,486.589996,493.369995,493.369995,2882500 +2021-05-17,485.589996,492.709991,482.809998,488.940002,488.940002,2705200 +2021-05-18,488.399994,493.480011,486.190002,486.279999,486.279999,2350500 +2021-05-19,481.630005,488.570007,478.540009,487.700012,487.700012,3349900 +2021-05-20,489.549988,502.700012,488.980011,501.670013,501.670013,3721200 +2021-05-21,503.119995,505.399994,497.260010,497.890015,497.890015,3322900 +2021-05-24,501.049988,504.250000,499.510010,502.899994,502.899994,2412600 +2021-05-25,506.000000,506.369995,499.220001,501.339996,501.339996,2699500 +2021-05-26,502.339996,504.140015,500.500000,502.359985,502.359985,2465300 +2021-05-27,501.799988,505.100006,498.540009,503.859985,503.859985,3253800 +2021-05-28,504.399994,511.760010,502.529999,502.809998,502.809998,2910300 +2021-06-01,504.010010,505.410004,497.739990,499.079987,499.079987,2482600 +2021-06-02,499.820007,503.220001,495.820007,499.239990,499.239990,2269000 +2021-06-03,495.190002,496.660004,487.250000,489.429993,489.429993,3887400 +2021-06-04,492.000000,501.859985,490.950012,494.739990,494.739990,3160500 +2021-06-07,492.920013,496.700012,490.549988,494.660004,494.660004,2791900 +2021-06-08,497.000000,498.820007,489.369995,492.390015,492.390015,2374000 +2021-06-09,494.500000,496.089996,484.649994,485.809998,485.809998,3055000 +2021-06-10,487.170013,490.209991,482.140015,487.269989,487.269989,4382900 +2021-06-11,490.000000,491.410004,487.779999,488.769989,488.769989,3124000 +2021-06-14,489.679993,503.500000,486.910004,499.890015,499.890015,4400200 +2021-06-15,501.230011,501.230011,490.399994,491.899994,491.899994,3104100 +2021-06-16,495.000000,496.459991,486.279999,492.410004,492.410004,3533200 +2021-06-17,490.250000,501.799988,490.149994,498.339996,498.339996,3198300 +2021-06-18,496.399994,504.489990,495.239990,500.769989,500.769989,5197600 +2021-06-21,501.640015,502.049988,492.279999,497.000000,497.000000,5277300 +2021-06-22,498.540009,513.549988,495.799988,508.820007,508.820007,5809300 +2021-06-23,508.480011,516.630005,508.200012,512.739990,512.739990,3944800 +2021-06-24,517.960022,520.960022,514.400024,518.059998,518.059998,3361200 +2021-06-25,528.840027,533.059998,525.000000,527.070007,527.070007,5299100 +2021-06-28,528.119995,533.940002,524.559998,533.030029,533.030029,2820200 +2021-06-29,533.549988,536.130005,528.570007,533.500000,533.500000,2314600 +2021-06-30,534.059998,534.380005,526.820007,528.210022,528.210022,2773400 +2021-07-01,525.719971,537.039978,525.719971,533.539978,533.539978,2805400 +2021-07-02,535.500000,538.539978,529.390015,533.979980,533.979980,1975500 +2021-07-06,533.000000,542.859985,533.000000,541.640015,541.640015,2775100 +2021-07-07,544.239990,544.640015,531.659973,535.960022,535.960022,2722500 +2021-07-08,530.929993,535.500000,529.090027,530.760010,530.760010,3269000 +2021-07-09,531.000000,538.260010,528.580017,535.979980,535.979980,2777200 +2021-07-12,540.299988,540.650024,532.919983,537.309998,537.309998,1780700 +2021-07-13,535.760010,545.330017,535.760010,540.679993,540.679993,2751600 +2021-07-14,541.010010,554.099976,541.010010,547.950012,547.950012,4659500 +2021-07-15,553.969971,557.539978,538.200012,542.950012,542.950012,5713900 +2021-07-16,541.809998,544.059998,527.049988,530.309998,530.309998,3442100 +2021-07-19,526.049988,534.909973,522.239990,532.280029,532.280029,3885800 +2021-07-20,526.070007,536.640015,520.299988,531.049988,531.049988,6930400 +2021-07-21,526.130005,530.989990,505.609985,513.630005,513.630005,11906800 +2021-07-22,510.209991,513.679993,507.000000,511.769989,511.769989,4328100 +2021-07-23,512.159973,517.409973,504.660004,515.409973,515.409973,3820500 +2021-07-26,514.380005,521.130005,509.010010,516.489990,516.489990,2254500 +2021-07-27,518.080017,521.950012,512.049988,518.909973,518.909973,2759000 +2021-07-28,521.820007,524.469971,516.979980,519.299988,519.299988,2390500 +2021-07-29,519.960022,520.780029,513.789978,514.250000,514.250000,1736000 +2021-07-30,512.690002,519.789978,510.959991,517.570007,517.570007,2534900 +2021-08-02,519.000000,519.849976,510.510010,515.150024,515.150024,2096600 +2021-08-03,514.390015,515.630005,505.369995,510.820007,510.820007,2579400 +2021-08-04,513.000000,517.979980,510.369995,517.349976,517.349976,2039400 +2021-08-05,517.130005,525.409973,514.020020,524.890015,524.890015,2556700 +2021-08-06,524.000000,526.840027,519.390015,520.549988,520.549988,1919400 +2021-08-09,521.150024,522.669983,517.989990,519.969971,519.969971,1367800 +2021-08-10,520.000000,520.789978,512.969971,515.840027,515.840027,1960500 +2021-08-11,517.000000,519.570007,509.769989,512.400024,512.400024,1673900 +2021-08-12,511.859985,513.000000,507.200012,510.720001,510.720001,1685700 +2021-08-13,512.640015,521.440002,511.510010,515.919983,515.919983,2176300 +2021-08-16,515.239990,523.380005,512.299988,517.919983,517.919983,2032800 +2021-08-17,515.469971,520.789978,514.200012,518.909973,518.909973,2309800 +2021-08-18,520.000000,526.380005,518.650024,521.869995,521.869995,2582000 +2021-08-19,522.739990,548.390015,521.869995,543.710022,543.710022,7497300 +2021-08-20,545.090027,551.390015,539.099976,546.880005,546.880005,3774300 +2021-08-23,545.979980,555.549988,543.739990,553.330017,553.330017,2602000 +2021-08-24,551.479980,555.309998,549.270020,553.409973,553.409973,2109500 +2021-08-25,550.159973,552.840027,545.450012,547.580017,547.580017,2065600 +2021-08-26,546.159973,552.599976,545.900024,550.119995,550.119995,1595500 +2021-08-27,551.599976,564.169983,549.250000,558.919983,558.919983,3251100 +2021-08-30,557.250000,567.159973,556.450012,566.179993,566.179993,2434800 +2021-08-31,566.119995,569.479980,561.609985,569.190002,569.190002,2431900 +2021-09-01,569.000000,591.000000,569.000000,582.070007,582.070007,5626200 +2021-09-02,583.679993,598.760010,583.679993,588.549988,588.549988,6179900 +2021-09-03,585.799988,591.880005,583.140015,590.530029,590.530029,2681200 +2021-09-07,594.690002,613.849976,593.989990,606.710022,606.710022,5821400 +2021-09-08,603.840027,615.599976,595.710022,606.049988,606.049988,5424500 +2021-09-09,606.469971,609.440002,596.549988,597.539978,597.539978,2954200 +2021-09-10,598.159973,609.450012,593.669983,598.719971,598.719971,3948000 +2021-09-13,598.570007,598.570007,582.780029,589.289978,589.289978,3062900 +2021-09-14,584.890015,587.280029,575.559998,577.760010,577.760010,3457000 +2021-09-15,578.169983,584.619995,575.369995,582.869995,582.869995,2755600 +2021-09-16,584.299988,587.479980,577.719971,586.500000,586.500000,1832000 +2021-09-17,587.849976,590.280029,580.849976,589.349976,589.349976,4145100 +2021-09-20,586.789978,591.530029,568.080017,575.429993,575.429993,3732200 +2021-09-21,578.309998,581.880005,569.369995,573.140015,573.140015,2250900 +2021-09-22,579.690002,595.650024,579.690002,590.650024,590.650024,4021800 +2021-09-23,590.789978,599.320007,589.130005,593.260010,593.260010,2526200 +2021-09-24,592.500000,592.979980,583.640015,592.390015,592.390015,2126200 +2021-09-27,587.950012,593.580017,576.929993,592.640015,592.640015,2504700 +2021-09-28,589.000000,599.539978,580.159973,583.849976,583.849976,4431100 +2021-09-29,589.010010,609.880005,588.010010,599.059998,599.059998,6221000 +2021-09-30,608.049988,619.000000,608.049988,610.340027,610.340027,6612600 +2021-10-01,604.239990,614.989990,597.510010,613.150024,613.150024,4090800 +2021-10-04,613.390015,626.130005,594.679993,603.349976,603.349976,4995900 +2021-10-05,606.940002,640.390015,606.890015,634.809998,634.809998,9534300 +2021-10-06,628.179993,639.869995,626.359985,639.099976,639.099976,4580400 +2021-10-07,642.229980,646.840027,630.450012,631.849976,631.849976,3556900 +2021-10-08,634.169983,643.799988,630.859985,632.659973,632.659973,3271100 +2021-10-11,633.200012,639.419983,626.780029,627.039978,627.039978,2862500 +2021-10-12,633.020020,637.659973,621.989990,624.940002,624.940002,3227300 +2021-10-13,632.179993,632.179993,622.099976,629.760010,629.760010,2420300 +2021-10-14,632.229980,636.880005,626.789978,633.799988,633.799988,2671700 +2021-10-15,638.000000,639.419983,625.159973,628.289978,628.289978,4114400 +2021-10-18,632.099976,638.409973,620.590027,637.969971,637.969971,4669100 +2021-10-19,636.969971,641.000000,632.299988,639.000000,639.000000,7633100 +2021-10-20,625.570007,637.400024,617.150024,625.140015,625.140015,10622000 +2021-10-21,628.890015,654.010010,628.650024,653.159973,653.159973,8437100 +2021-10-22,651.809998,665.460022,651.809998,664.780029,664.780029,6186000 +2021-10-25,663.739990,675.880005,657.070007,671.659973,671.659973,3833500 +2021-10-26,673.760010,676.489990,662.770020,668.520020,668.520020,2904800 +2021-10-27,669.000000,671.409973,661.849976,662.919983,662.919983,2276900 +2021-10-28,670.950012,676.799988,668.030029,674.049988,674.049988,2859400 +2021-10-29,673.059998,690.969971,671.239990,690.309998,690.309998,3817500 +2021-11-01,689.059998,689.969971,676.539978,681.169983,681.169983,3110900 +2021-11-02,683.109985,687.679993,673.820007,677.719971,677.719971,3888600 +2021-11-03,677.270020,689.390015,677.270020,688.289978,688.289978,2334900 +2021-11-04,685.890015,685.940002,665.500000,668.400024,668.400024,4865000 +2021-11-05,663.969971,665.640015,645.010010,645.719971,645.719971,5277400 +2021-11-08,650.289978,656.000000,643.789978,651.450012,651.450012,2887500 +2021-11-09,653.700012,660.500000,650.520020,655.989990,655.989990,2415600 +2021-11-10,653.010010,660.330017,642.109985,646.909973,646.909973,2405800 +2021-11-11,650.239990,665.820007,649.710022,657.580017,657.580017,2868300 +2021-11-12,660.010010,683.340027,653.820007,682.609985,682.609985,4192700 +2021-11-15,681.239990,685.260010,671.489990,679.330017,679.330017,2872200 +2021-11-16,678.270020,688.359985,676.900024,687.400024,687.400024,2077400 +2021-11-17,690.000000,700.989990,686.090027,691.690002,691.690002,2732800 +2021-11-18,691.609985,691.739990,679.739990,682.020020,682.020020,2012900 +2021-11-19,692.349976,694.159973,675.000000,678.799988,678.799988,2613700 +2021-11-22,676.020020,679.479980,656.469971,659.200012,659.200012,2764400 +2021-11-23,658.179993,666.429993,646.049988,654.059998,654.059998,2320200 +2021-11-24,658.010010,661.440002,651.099976,658.289978,658.289978,1867300 +2021-11-26,675.000000,676.409973,660.669983,665.640015,665.640015,2872500 +2021-11-29,663.200012,667.989990,658.289978,663.840027,663.840027,2529400 +2021-11-30,668.200012,675.380005,640.010010,641.900024,641.900024,5608900 +2021-12-01,649.479980,654.520020,617.070007,617.770020,617.770020,3882800 +2021-12-02,617.099976,625.359985,612.880005,616.469971,616.469971,3331100 +2021-12-03,622.750000,625.500000,594.000000,602.130005,602.130005,4825200 +2021-12-06,606.010010,617.289978,601.000000,612.690002,612.690002,3075700 +2021-12-07,619.830017,628.890015,611.400024,625.580017,625.580017,3125200 +2021-12-08,630.000000,632.460022,623.200012,628.080017,628.080017,2220300 +2021-12-09,627.580017,630.239990,610.440002,611.000000,611.000000,2376300 +2021-12-10,616.780029,617.739990,605.880005,611.659973,611.659973,2747900 +2021-12-13,612.000000,612.640015,599.520020,604.559998,604.559998,2517900 +2021-12-14,598.710022,602.289978,588.130005,597.989990,597.989990,2984500 +2021-12-15,598.179993,605.690002,584.510010,605.039978,605.039978,2866200 +2021-12-16,597.090027,602.830017,588.000000,591.059998,591.059998,3143200 +2021-12-17,591.609985,593.250000,581.739990,586.729980,586.729980,4386900 +2021-12-20,586.429993,602.880005,584.260010,593.739990,593.739990,3358400 +2021-12-21,597.539978,607.820007,593.859985,604.919983,604.919983,2319400 +2021-12-22,603.359985,614.820007,602.630005,614.239990,614.239990,2335700 +2021-12-23,616.400024,616.880005,607.570007,614.090027,614.090027,1621100 +2021-12-27,615.000000,615.000000,609.250000,613.119995,613.119995,2061500 +2021-12-28,614.950012,618.409973,609.690002,610.710022,610.710022,1882800 +2021-12-29,610.710022,613.979980,604.679993,610.539978,610.539978,1287200 +2021-12-30,612.989990,620.609985,611.239990,612.090027,612.090027,1625100 +2021-12-31,610.010010,614.080017,602.049988,602.440002,602.440002,1995900 +2022-01-03,605.609985,609.989990,590.559998,597.369995,597.369995,3067500 +2022-01-04,599.909973,600.409973,581.599976,591.150024,591.150024,4393100 +2022-01-05,592.000000,592.840027,566.880005,567.520020,567.520020,4148700 +2022-01-06,554.340027,563.359985,542.010010,553.289978,553.289978,5711800 +2022-01-07,549.460022,553.429993,538.219971,541.059998,541.059998,3381700 +2022-01-10,538.489990,543.690002,526.320007,539.849976,539.849976,4486100 +2022-01-11,536.989990,543.909973,530.070007,540.840027,540.840027,3077800 +2022-01-12,544.270020,544.270020,532.020020,537.219971,537.219971,3787400 +2022-01-13,537.059998,540.789978,518.260010,519.200012,519.200012,4475100 +2022-01-14,517.599976,538.369995,511.880005,525.690002,525.690002,7849400 +2022-01-18,520.080017,521.750000,508.679993,510.799988,510.799988,4839100 +2022-01-19,515.000000,523.210022,510.510010,515.859985,515.859985,4353500 +2022-01-20,517.750000,526.640015,506.929993,508.250000,508.250000,12659000 +2022-01-21,400.429993,409.149994,379.989990,397.500000,397.500000,58904300 +2022-01-24,383.910004,387.260010,351.459991,387.149994,387.149994,32346000 +2022-01-25,379.140015,387.709991,365.130005,366.420013,366.420013,15145800 +2022-01-26,378.269989,382.660004,356.619995,359.700012,359.700012,12684000 +2022-01-27,382.059998,394.799988,378.100006,386.700012,386.700012,24324700 +2022-01-28,386.760010,387.000000,372.079987,384.359985,384.359985,11966600 +2022-01-31,401.970001,427.700012,398.200012,427.140015,427.140015,20047500 +2022-02-01,432.959991,458.480011,425.540009,457.130005,457.130005,22542300 +2022-02-02,448.250000,451.980011,426.480011,429.480011,429.480011,14346000 +2022-02-03,421.440002,429.260010,404.279999,405.600006,405.600006,9905200 +2022-02-04,407.309998,412.769989,396.640015,410.170013,410.170013,7782400 \ No newline at end of file diff --git a/tests/netflix_plot.ipynb b/tests/netflix_plot.ipynb new file mode 100644 index 0000000..1aa2ca1 --- /dev/null +++ b/tests/netflix_plot.ipynb @@ -0,0 +1,114 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "# Import necessary libraries\n", + "import pandas as pd\n", + "import numpy as np\n", + "from sklearn.model_selection import train_test_split\n", + "from sklearn.linear_model import LinearRegression\n", + "from sklearn.metrics import mean_squared_error, r2_score\n", + "import matplotlib.pyplot as plt" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "# Load the Netflix dataset\n", + "file_path = 'netflix.csv' # Update this path as needed\n", + "data = pd.read_csv(file_path)" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "# Preprocessing\n", + "numeric_features = ['Open', 'High', 'Low', 'Volume']\n", + "target = 'Close'\n", + "\n", + "data = data[numeric_features + [target]].dropna()" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "# Split the data into features (X) and target (y)\n", + "X = data[numeric_features]\n", + "y = data[target]\n", + "\n", + "# Split into training and testing sets\n", + "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)\n", + "\n", + "# Build a Linear Regression model\n", + "model = LinearRegression()\n", + "model.fit(X_train, y_train)\n", + "\n", + "# Make predictions on the test set\n", + "y_pred = model.predict(X_test)" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA1IAAAIjCAYAAAAJLyrXAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOzdeXwTdfrA8U+SpmnaNE0KLSlQoLQcJYtIVSgRwRO8dr3P9b61dV3dev28L1y17rpuK943rrsqnqureLJrFA+KYigg5VRIKSRNmzZN08z8/hgaKD1ooSc879eLV+jMdPLNdJLMM9/v93l0qqqqCCGEEEIIIYToNH1fN0AIIYQQQgghBhoJpIQQQgghhBCiiySQEkIIIYQQQogukkBKCCGEEEIIIbpIAikhhBBCCCGE6CIJpIQQQgghhBCiiySQEkIIIYQQQogukkBKCCGEEEIIIbpIAikhhBBCCCGE6CIJpIQQopvodDruvPPOvm5Gnzv00EM59NBDYz+vXbsWnU7H888/32dt2tnObexvXnrpJcaPH4/RaMRmswED47h2p88//xydTsfrr7/eJ8///PPPo9PpWLt2bZ88vxCi/5NASgjRLz322GPodDqmTp262/vYuHEjd955J0uWLOm+hvVzzRefzf+MRiOjR4/mvPPOY/Xq1X3dvC5xu93ceeedVFdX91kbRo0ahU6n4+qrr261bk8u9Ds6N5cvX84FF1xAdnY2Tz31FE8++eTuNH23LF26lFNPPZWRI0eSkJDAsGHDOOqoo/j73//eYrs5c+bw1ltv9Vq7uqo5yGz+ZzAYGDFiBCeddNI+9XkghOhZEkgJIfqlefPmMWrUKL755htWrVq1W/vYuHEjd9111z554fSHP/yBl156iSeffJLjjjuOf/7znxx00EFs3Lix19sycuRIQqEQ5557bpd+z+12c9ddd/VpINXsqaee6tZj19G5+fnnn6MoCn/729+44IILOP3009vcx+4e1/a43W4OPPBAfvjhBy699FJKSkq45JJL0Ov1/O1vf2uxbX8PpJqdddZZvPTSSzz77LOcffbZfPrpp+Tn53fqM+Hcc88lFAoxcuTInm+oEGJAiuvrBgghxM7WrFmD2+1m/vz5XH755cybN4877rijr5s1oBxyyCGceuqpAFx44YWMHTuWP/zhD7zwwgvcfPPNbf5OXV0dSUlJ3d4WnU5HQkJCt++3tzidTlasWMGf//xnHn300R5/vs2bNwPEhvS1p7uP63333UdKSgrffvttq+dubtNAk5eXxznnnBP7+eCDD+Z3v/sdc+fO5Yknnmjzd5rfBwaDAYPB0FtNFUIMQNIjJYTod+bNm4fdbue4447j1FNPZd68eW1uV11dzbXXXsuoUaMwmUwMHz6c8847jy1btvD5559z0EEHAVog0TzEp3k+yahRo7jgggta7XPneSiNjY3cfvvtHHDAAaSkpJCUlMQhhxzCZ5991uXXVVlZSVxcHHfddVerdStWrECn01FSUgJAJBLhrrvuYsyYMSQkJDBo0CCmT5/OggULuvy8AIcffjigBakAd955JzqdjmXLlnH22Wdjt9uZPn16bPuXX36ZAw44ALPZTGpqKmeeeSYbNmxotd8nn3yS7OxszGYzU6ZM4b///W+rbdqby7N8+XJOP/100tLSMJvNjBs3jltuuSXWvuuvvx6ArKys2N9vx/kq3dnGjowaNYrzzjuv071Sv/76KxdddBFDhgzBZDLhdDp59tlnY+s7OjdHjRoVu2mQlpbW4by7nY/r5s2bSUtL49BDD0VV1dh2q1atIikpiTPOOKPDdldUVOB0OtsM4NLT02P/1+l01NXV8cILL8TavuN7qaysjGOOOQar1YrFYuGII47g66+/brXPjt6/7QmHwxx//PGkpKTgdrs7fD1t2fl90DwP6osvvuCqq64iPT2d4cOHt1i38xypDz74gJkzZ5KcnIzVauWggw7ilVdeabHNokWLOProo0lJSSExMZGZM2fy5ZdfttimtraWP/7xj7HXn56ezlFHHcXixYu7/LqEEH1DeqSEEP3OvHnzOPnkk4mPj+ess85i7ty5fPvtt7GLT4BgMMghhxxCeXk5F110EXl5eWzZsoV33nmHX375hdzcXO6++25uv/12LrvsMg455BAAXC5Xl9pSU1PD008/zVlnncWll15KbW0tzzzzDLNnz+abb75h//337/S+hgwZwsyZM/nXv/7Vqoftn//8JwaDgdNOOw3QAon777+fSy65hClTplBTU8N3333H4sWLOeqoo7r0GkC7SAYYNGhQi+WnnXYaY8aMYc6cObGL7/vuu4/bbruN008/nUsuuYSqqir+/ve/M2PGDMrKymIX2s888wyXX345LpeLP/7xj6xevZrf/e53pKamkpmZ2WF7fvzxRw455BCMRiOXXXYZo0aNoqKignfffZf77ruPk08+mZUrV/KPf/yDv/71rwwePBjQgoveauOObrnlFl588cVd9kpVVlaSn5+PTqejsLCQtLQ0PvjgAy6++GJqamr44x//2OG5+cgjj/Diiy/y5ptvMnfuXCwWC/vtt1+n2piens7cuXM57bTT+Pvf/84f/vAHFEXhggsuIDk5mccee6zD3x85ciRfffUVP/30E7/5zW/a3e6ll16KnZeXXXYZANnZ2QB4PB4OOeQQrFYrN9xwA0ajkSeeeIJDDz2UL774IjbncVfv3+a/945CoRAnnHAC3333HR9//HGLz4POau99cNVVV5GWlsbtt99OXV1du7///PPPc9FFF+F0Orn55pux2WyUlZXxn//8h7PPPhuATz/9lGOOOYYDDjiAO+64A71ez3PPPcfhhx/Of//7X6ZMmQLAFVdcweuvv05hYSETJkxg69at/O9//6O8vJy8vLwuvzYhRB9QhRCiH/nuu+9UQF2wYIGqqqqqKIo6fPhw9Zprrmmx3e23364C6vz581vtQ1EUVVVV9dtvv1UB9bnnnmu1zciRI9Xzzz+/1fKZM2eqM2fOjP3c1NSkhsPhFtv4/X51yJAh6kUXXdRiOaDecccdHb6+J554QgXUpUuXtlg+YcIE9fDDD4/9PGnSJPW4447rcF9t+eyzz1RAffbZZ9Wqqip148aN6r///W911KhRqk6nU7/99ltVVVX1jjvuUAH1rLPOavH7a9euVQ0Gg3rfffe1WL506VI1Li4utryxsVFNT09X999//xbH58knn1SBFsdwzZo1rf4OM2bMUJOTk9V169a1eJ7mv52qqupDDz2kAuqaNWt6vI3tGTlyZOzvcOGFF6oJCQnqxo0bVVXdfqxfe+212PYXX3yxmpGRoW7ZsqXFfs4880w1JSVFra+vV1W143Oz+W9TVVXVYvnO52Zbx1VVVfWss85SExMT1ZUrV8aO4VtvvbXL1/rRRx+pBoNBNRgM6rRp09QbbrhB/fDDD9XGxsZW2yYlJbX5/jnxxBPV+Ph4taKiIrZs48aNanJysjpjxozYss68f3c8vrW1terMmTPVwYMHq2VlZbt8Lc3H5q677lKrqqpUr9erfv755+rkyZNVQH3jjTdUVVXV5557TgXU6dOnq01NTS320byu+fyrrq5Wk5OT1alTp6qhUKjNNiuKoo4ZM0adPXt2i3O5vr5ezcrKUo866qjYspSUFLWgoGCXr0UI0X/J0D4hRL8yb948hgwZwmGHHQZow4jOOOMMXn31VaLRaGy7N954g0mTJnHSSSe12odOp+u29hgMBuLj4wFQFAWfz0dTUxMHHnjgbg3BOfnkk4mLi+Of//xnbNlPP/3EsmXLWgy9stlseDwefv75591q90UXXURaWhpDhw7luOOOiw3FOvDAA1tsd8UVV7T4ef78+SiKwumnn86WLVti/xwOB2PGjIkNafzuu+/YvHkzV1xxRez4AFxwwQWkpKR02LaqqioWLlzIRRddxIgRI1qs68zfrjfa2JZbb72VpqYm/vznP7e5XlVV3njjDX7729+iqmqLts2ePZtAINArw7ZKSkpISUnh1FNP5bbbbuPcc8/lhBNO2OXvHXXUUXz11Vf87ne/44cffuDBBx9k9uzZDBs2jHfeeWeXvx+NRvnoo4848cQTGT16dGx5RkYGZ599Nv/73/+oqakBuvb+DQQCzJo1i+XLl/P55593qRf4jjvuIC0tDYfDwaGHHkpFRQUPPPAAJ598covtLr300l3Oh1qwYAG1tbXcdNNNreamNbd5yZIl/Pzzz5x99tls3bo19vevq6vjiCOOYOHChSiKAmjv8UWLFvVJAhghRPeQoX1CiH4jGo3y6quvcthhh8XmMABMnTqVhx9+mE8++YRZs2YB2hCdU045pVfa9cILL/Dwww+zfPlyIpFIbHlWVlaX9zV48GCOOOII/vWvf3HPPfcA2rC+uLi4Fhd3d999NyeccAJjx47lN7/5DUcffTTnnntup4d53X777RxyyCEYDAYGDx5Mbm4ucXGtP/J3fg0///wzqqoyZsyYNvdrNBoBWLduHUCr7ZrTrXekOQ17R8PHOtIbbWzL6NGjOffcc3nyySe56aabWq2vqqqiurqaJ598st2U5b2RtCE1NZVHH32U0047jSFDhnQpQcZBBx3E/PnzaWxs5IcffuDNN9/kr3/9K6eeeipLlixhwoQJ7f5uVVUV9fX1jBs3rtW63NxcFEVhw4YNOJ3OLr1///jHP9LQ0EBZWRlOp7PTrwXgsssu47TTTkOv12Oz2XA6nZhMplbbdea93DwssKPztvnGx/nnn9/uNoFAALvdzoMPPsj5559PZmYmBxxwAMceeyznnXfebp2bQoi+IYGUEKLf+PTTT9m0aROvvvoqr776aqv18+bNiwVSe6q9no9oNNrizvTLL7/MBRdcwIknnsj1119Peno6BoOB+++/P3Zh1VVnnnkmF154IUuWLGH//ffnX//6F0cccUSLeSEzZsygoqKCt99+m48++oinn36av/71rzz++ONccsklu3yOiRMncuSRR+5yO7PZ3OJnRVHQ6XR88MEHbd6ht1gsnXiFPasv23jLLbfw0ksv8cADD3DiiSe2ahfAOeec0+6FdGcD4T314YcfAuD3+/nll192mQFwZ/Hx8Rx00EEcdNBBjB07lgsvvJDXXnutT7JnnnDCCbz66qv8+c9/5sUXX0Sv7/xgmjFjxuzW+2B3NZ8DDz30ULs9Z83n5+mnn84hhxzCm2++yUcffcRDDz3EAw88wPz58znmmGO6pT1CiJ4lgZQQot+YN28e6enplJaWtlo3f/583nzzTR5//HHMZjPZ2dn89NNPHe6vo2Fidru9zfpE69ata3FH+PXXX2f06NHMnz+/xf725ILyxBNP5PLLL48N71u5cmWbKclTU1O58MILufDCCwkGg8yYMYM777yzU4HU7srOzkZVVbKyshg7dmy72zXX1vn5559jmdBAyza4Zs0aJk2a1O7vNh/f3f379UYb25Odnc0555zDE0880apYdFpaGsnJyUSj0V1evHfn8NOd/ec//+Hpp5/mhhtuYN68eZx//vksWrSozR7JzmgeDrpp06bYsrban5aWRmJiIitWrGi1bvny5ej1+liCj868f5udeOKJzJo1K5Y0Y+7cubvzMvZYc0KNn376iZycnA63sVqtnQrgMjIyuOqqq7jqqqvYvHkzeXl53HfffRJICTFAyBwpIUS/EAqFmD9/Pscffzynnnpqq3+FhYXU1tbG5mqccsopsaFHO1O3ZZ9rronUVsCUnZ3N119/TWNjY2zZe++91yp9dnOPh7pDOulFixbx1Vdf7fZrtdlszJ49m3/961+8+uqrxMfHt+rd2Lp1a4ufLRYLOTk5hMPh3X7ezjj55JMxGAzcddddLV4zaMeguV0HHnggaWlpPP744y2O4fPPP7/LArppaWnMmDGDZ599lvXr17d6jmbt/f16o40dufXWW4lEIjz44IMtlhsMBk455RTeeOONNoOEqqqqXb62PVVdXR3LqDdnzhyefvppFi9ezJw5c3b5u5999lmr4wnw/vvvA7QYspeUlNSq7QaDgVmzZvH222+3SBleWVnJK6+8wvTp07FarUDn3r87Ou+883j00Ud5/PHHufHGG3f5WnrCrFmzSE5O5v7776ehoaHFuuY2H3DAAWRnZ1NcXEwwGGy1j+ZzIBqNEggEWqxLT09n6NChPf4eF0J0H+mREkL0C++88w61tbX87ne/a3N9fn4+aWlpzJs3jzPOOIPrr7+e119/ndNOO42LLrqIAw44AJ/PxzvvvMPjjz/OpEmTyM7Oxmaz8fjjj5OcnExSUhJTp04lKyuLSy65hNdff52jjz6a008/nYqKCl5++eXYHeVmxx9/PPPnz+ekk07iuOOOY82aNTz++ONMmDChzQulzjrjjDM455xzeOyxx5g9e3aroVcTJkzg0EMP5YADDiA1NZXvvvsuliq5J2VnZ3Pvvfdy8803s3btWk488USSk5NZs2YNb775JpdddhlFRUUYjUbuvfdeLr/8cg4//HDOOOMM1qxZw3PPPdepOR6PPvoo06dPJy8vj8suu4ysrCzWrl3Lv//9b5YsWQJoF6WgDac788wzMRqN/Pa3v+21NnZ0jM455xxeeOGFVuv+/Oc/89lnnzF16lQuvfRSJkyYgM/nY/HixXz88cf4fL7YPto7N/fENddcw9atW/n4448xGAwcffTRXHLJJdx7772ccMIJHfbCXX311dTX13PSSScxfvx4Ghsbcbvd/POf/2TUqFFceOGFsW0POOAAPv74Y/7yl78wdOhQsrKymDp1Kvfeey8LFixg+vTpXHXVVcTFxfHEE08QDodbBJ6def/urLCwkJqaGm655RZSUlL4v//7vz06Vl1ltVr561//yiWXXMJBBx0Uq7/2ww8/UF9fzwsvvIBer+fpp5/mmGOOwel0cuGFFzJs2DB+/fVXPvvsM6xWK++++y61tbUMHz6cU089lUmTJmGxWPj444/59ttvefjhh3v1dQkh9kDvJwoUQojWfvvb36oJCQlqXV1du9tccMEFqtFojKWW3rp1q1pYWKgOGzZMjY+PV4cPH66ef/75LVJPv/322+qECRPUuLi4VqmiH374YXXYsGGqyWRSDz74YPW7775rlWJaURR1zpw56siRI1WTyaROnjxZfe+999Tzzz9fHTlyZIv20Yn0581qampUs9msAurLL7/cav29996rTpkyRbXZbKrZbFbHjx+v3nfffW2mot5RWym529Jeiu1mb7zxhjp9+nQ1KSlJTUpKUsePH68WFBSoK1asaLHdY489pmZlZakmk0k98MAD1YULF3Y6TfdPP/2knnTSSarNZlMTEhLUcePGqbfddluLbe655x512LBhql6vb5UKvTvb2J4d05/v6Oeff1YNBkObx7qyslItKChQMzMzVaPRqDocDvWII45Qn3zyyRbbtXdu7m7687ffflsF1IcffrjF79XU1KgjR45UJ02a1OH588EHH6gXXXSROn78eNVisajx8fFqTk6OevXVV6uVlZUttl2+fLk6Y8aM2Dm8Yyr0xYsXq7Nnz1YtFouamJioHnbYYarb7W71fLt6/7Z3Lt9www0qoJaUlLT7WpqPzUMPPdTuNqq6PcV5c1mAttbtnH7/nXfeUV0ul2o2m1Wr1apOmTJF/cc//tFim7KyMvXkk09WBw0apJpMJnXkyJHq6aefrn7yySeqqqpqOBxWr7/+enXSpElqcnKympSUpE6aNEl97LHHOmyvEKJ/0alqG33oQgghhBBCCCHaJXOkhBBCCCGEEKKLJJASQgghhBBCiC6SQEoIIYQQQgghukgCKSGEEEIIIYToIgmkhBBCCCGEEKKLJJASQgghhBBCiC6SgryAoihs3LiR5ORkdDpdXzdHCCGEEEII0UdUVaW2tpahQ4ei17ff7ySBFLBx40YyMzP7uhlCCCGEEEKIfmLDhg0MHz683fUSSAHJycmAdrCsVmuftiUSifDRRx8xa9YsjEZjn7ZlbyTHt+fIse1Zcnx7jhzbniXHt2fJ8e05cmx7Vn8+vjU1NWRmZsZihPZIIAWx4XxWq7VfBFKJiYlYrdZ+d1LtDeT49hw5tj1Ljm/PkWPbs+T49iw5vj1Hjm3PGgjHd1dTfiTZhBBCCCGEEEJ0kQRSQgghhBBCCNFFEkgJIYQQQgghRBfJHCkhhBBCCNEnVFWlqamJaDTa101pJRKJEBcXR0NDQ79s30DXl8fXYDAQFxe3x2WPJJASQgghhBC9rrGxkU2bNlFfX9/XTWmTqqo4HA42bNggdUZ7QF8f38TERDIyMoiPj9/tfUggJYQQQgghepWiKKxZswaDwcDQoUOJj4/vd8GKoigEg0EsFkuHRVnF7umr46uqKo2NjVRVVbFmzRrGjBmz288vgZQQQgghhOhVjY2NKIpCZmYmiYmJfd2cNimKQmNjIwkJCRJI9YC+PL5msxmj0ci6detibdgdclYIIYQQQog+IQGK6Cvdce7J2SuEEEIIIYQQXSSBlBBCCCGEEEJ0UZ8GUqNGjUKn07X6V1BQAEBDQwMFBQUMGjQIi8XCKaecQmVlZYt9rF+/nuOOO47ExETS09O5/vrraWpq6ouXI4QQQgghRJ/R6XS89dZb3b7fUaNG8cgjj3T7fge6Pg2kvv32WzZt2hT7t2DBAgBOO+00AK699lreffddXnvtNb744gs2btzIySefHPv9aDTKcccdR2NjI263mxdeeIHnn3+e22+/vU9ejxBCCCGE2Pt99dVXGAwGjjvuuC7/bl8GJRdccEGs4yI+Pp6cnBzuvvvuXXZCfPvtt1x22WW91MqBo08DqbS0NBwOR+zfe++9R3Z2NjNnziQQCPDMM8/wl7/8hcMPP5wDDjiA5557Drfbzddffw3ARx99xLJly3j55ZfZf//9OeaYY7jnnnsoLS2lsbGxL1+aEEIIIYToYYoCS5fCwoXao6L0zvM+88wzXH311SxcuJCNGzf2zpN2k6OPPppNmzbx888/86c//Yk777yThx56qM1tm6+n09LS+m12xb7Ub9KfNzY28vLLL3Pdddeh0+n4/vvviUQiHHnkkbFtxo8fz4gRI/jqq6/Iz8/nq6++YuLEiQwZMiS2zezZs7nyyivxeDxMnjy5zecKh8OEw+HYzzU1NYBWYTkSifTQK+yc5ufv63bsreT49hw5tj1Ljm/PkWPbs9o9vqoCNcuhsRribWAdDzqZut1VA/X8jUQiqKqKoigouxn9uN1QWqqjvBwaGyE+HnJzoaBAxeXa8zaqqhp73LGNwWCQf/7zn3zzzTds2rSJ5557jptvvrnF77777rvce++9LF26FIvFwvTp05k/fz6HH34469at49prr+Xaa68FtBFWd911F2+//TaLFy+O7eNvf/sbf/vb31i9ejWg9QrdcsstLFmyhEgkwv7778/DDz9MXl5ei+fu6Jiqqkp8fDzp6ekAXH755cyfP5933nmHG2+8kQsvvJDq6moOOuggHnvsMUwmExUVFYwePZprrrmGa665BoDq6mpuuukm3n77bQKBADk5OcyZM4fjjz8egP/973/ccsstfPfd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KysLs9nMpEmTeP3111s8z/vvv8/YsWMxm80cdthhLdrZkeTkZBwOB2PHjqW0tBSz2cy7774LaD1W99xzD+eddx5Wq5XLLruszaF9Ho+H448/HqvVSnJyMocccggVFRWx9U8//TS5ubkkJCQwfvx4Hnvssdi6xsZGCgsLycjIICEhgZEjR3L//fd3qu27SwIpIYQQQoh9mN7uJGloLo4UL3V1Kk1N2tSlpiaoq1MZkuIlaegE9PbOpy331jtZVZXLYIsX2HkelIotcQtNUSNNasLuNXpbIgt8i8Fog6RR2qO/TFvew8HUjsxmc4uep08++YQVK1awYMEC3nvvPSKRCLNnzyY5OZn//ve/fPnll1gsFo4++ujY7z388MM8//zzPPvss/zvf//D5/Px5ptvdvi85513Hv/4xz949NFHKS8v54knnsBisZCZmckbb7wBwIoVK9i0aRN/+9vfALj//vt58cUXefzxx/F4PFx77bWcc845fPHFF4AW8J188sn89re/ZcmSJVxyySXcdNNNXT4mcXFxGI3GFseluLiYSZMmUVZWxm233dbqd3799VdmzJiByWTi008/5fvvv+eiiy6KDZucN28et99+O/fddx/l5eXMmTOH2267jRdeeAGARx99lHfeeYd//etfrFixgnnz5jFq1Kgut71Lr7NH9y6EEEIIIfo3nZ40VyGmL4owGiv41ecgFDJjjg8xMsNL8iA7VlcB6Dp//92equfZHwrJSisiw1KBv8FBuMmMKS6EPcGLPzyeukgyev3Oc7I6YVsiC8I+sORoYwYB4iyQlA11FbCyFAbnd6nNXW6GqvLJJ5/w4YcfcvXVV8eWJyUl8fTTTxMfHw/Ayy+/jKIoPP300+i2tfW5557DZrPx+eefM2vWLB555BFuvvlmTj75ZAAef/xxPvzww3afe+XKlfzrX/9iwYIFHHnkkQCMHj06tj41NRWA9PR0bDYboPVgzZkzh48//php06bFfud///sfTzzxBDNnzmTu3LlkZ2fz8MMPAzBu3DiWLl3KAw880Onj0tjYyMMPP0wgEODwww+PLT/88MP505/+FPt59erVLX6vtLSUlJQUXn31VYxGIwBjx46Nrb/jjjt4+OGHY8coKyuLZcuW8cQTT3D++eezfv16xowZw/Tp09HpdIwcObLTbd5dEkgJIYQQQuzr0lxYZxaT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Cvxm7oBv2R4E3CyFsbMO0hEyeIYmQsK1N38QNlJERERERENZcAokQdPhxbU3BxUbKSIiIiKioY5rbw46tqFERERERERWYiNFRERERERkJTZSREREREREVmIjRUREREREZCU2UkRERERERFZiI0VERERERGQlNlJERERERERWYiNFRERERERkJTZSREREREREVmIjRUREREREZCU2UkRERERERFZiI0VERERERGQlNlJERERERERWGuHoAJyBEAIA0NLS4uBIAIPBgPb2drS0tMDd3d3R4Qw5zK/tMLe2xfzaDnNrW8yvbTG/tsPc2pYz57e7J+juEfrCRgqARqMBAIwePdrBkRARERERkTPQaDTw9/fvc79E9NdqDQNGoxE3btyAr68vJBKJQ2NpaWnB6NGj8fXXX8PPz8+hsQxFzK/tMLe2xfzaDnNrW8yvbTG/tsPc2pYz51cIAY1Gg/DwcEilfd8JxStSAKRSKUaNGuXoMCz4+fk5XVENJcyv7TC3tsX82g5za1vMr20xv7bD3NqWs+b3bleiuvFhE0RERERERFZiI0VERERERGQlNlJORiaTYfPmzZDJZI4OZUhifm2HubUt5td2mFvbYn5ti/m1HebWtoZCfvmwCSIiIiIiIivxihQREREREZGV2EgRERERERFZiY0UERERERGRldhIERERERERWYmNlBPJzs5GVFQUPD09kZSUhE8//dTRIbmkLVu24Ec/+hF8fX0REhKCBQsWoKyszGLMT37yE0gkEouvVatWOShi1/GnP/2pR94mTpxo3t/R0YGMjAwEBgZCLpdj0aJFqKurc2DEriUqKqpHfiUSCTIyMgCwbq119uxZPPTQQwgPD4dEIsHhw4ct9gsh8MILLyAsLAxeXl6YPXs2rl+/bjGmoaEBS5cuhZ+fHxQKBZ566im0trba8V04p7vl1mAwYOPGjYiLi4OPjw/Cw8OxbNky3Lhxw+J39FbvW7dutfM7cU791e7y5ct75C4tLc1iDGu3b/3lt7fjsEQiwfbt281jWL+9G8g52EDOFWpqajBv3jx4e3sjJCQEzz33HDo7O+35VgaEjZSTePfdd/Hss89i8+bNuHz5MhISEpCamoqbN286OjSXc+bMGWRkZODChQs4fvw4DAYD5syZg7a2NotxK1asQG1trflr27ZtDorYtcTGxlrk7ZNPPjHv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rVuFQqEQR44cEVeuXBHp6elizJgxQqvVmn9HWlqamDJlirh48aL45JNPxH333SeWLFniqLfkNO6WW71eL+bPny9GjRoliouLLY7D3U/cys/PF7t27RLFxcWioqJCHDhwQAQHB4tly5Y5+J05h7vlV6PRiMzMTFFQUCAqKyvFiRMnRGJiorjvvvtER0eH+XewdvvW37FBCCGam5uFt7e32Lt3b4/Xs3771t85mBD9nyt0dnaKyZMnizlz5oji4mLx8ccfi+DgYJGVleWIt3RXbKScyKuvvioiIiKEh4eHmDZtmrhw4YKjQ3JJAHr92rdvnxBCiJqaGjFjxgwREBAgZDKZGDdunHjuuedEc3OzYwN3AY899pgICwsTHh4eYuTIkeKxxx4T5eXl5v1arVY888wzQqlUCm9vb/Hwww+L2tpaB0bsev79738LAKKsrMxiO+vWeqdPn+71WPDEE08IIUyPQN+0aZMIDQ0VMplMzJo1q0fe6+vrxZIlS4RcLhd+fn7iySefFBqNxgHvxrncLbeVlZV9HodPnz4thBCisLBQJCUlCX9/f+Hp6SliYmLEX/7yF4tGYDi7W37b29vFnDlzRHBwsHB3dxeRkZFixYoVPT54Ze32rb9jgxBCvP7668LLy0s0NTX1eD3rt2/9nYMJMbBzhaqqKjF37lzh5eUlgoKCxIYNG4TBYLDzu+mfRAghbHSxi4iIiIiIaEjiPVJERERERERWYiNFRERERERkJTZSREREREREVmIjRUREREREZCU2UkRERERERFZiI0VERERERGQlNlJERERERERWYiNFRERERERkJTZSRERE90AikeDw4cOODoOIiByEjRQRETmtW7duYfXq1YiIiIBMJoNKpUJqairOnz/v6NCIiGiYG+HoAIiIiPqyaNEi6PV65ObmYuzYsairq8PJkydRX1/v6NCIiGiY4xUpIiJySk1NTTh37hxeeeUV/PSnP0VkZCSmTZuGrKwszJ8/HwCwc+dOxMXFwcfHB6NHj8YzzzyD1tZW8+/IycmBQqHA0aNHMWHCBHh7e+ORRx5Be3s7cnNzERUVBaVSibVr16Krq8v8uqioKPz5z3/GkiVL4OPjg5EjRyI7O/uu8X799dd49NFHoVAoEBAQgPT0dFRVVZn35+XlYdq0afDx8YFCocADDzyA6urqwU0aERHZDRspIiJySnK5HHK5HIcPH4ZOp+t1jFQqxe7du1FSUoLc3FycOnUKv/vd7yzGtLe3Y/fu3XjnnXfw8ccfIy8vDw8//DCOHTuGY8eOYf/+/Xj99dfx/vvvW7xu+/btSEhIQFFREX7/+99j3bp1OH78eK9xGAwGpKamwtfXF+fOncP58+chl8uRlpYGvV6Pzs5OLFiwADNnzsSVK1dQUFCAlStXQiKRDE6yiIjI7iRCCOHoIIiIiHrzwQcfYMWKFdBqtUhMTMTMmTOxePFixMfH9zr+/fffx6pVq3D79m0ApitSTz75JMrLyxEdHQ0AWLVqFfbv34+6ujrI5XIAQFpaGqKiovDaa68BMF2RiomJwUcffWT+3YsXL0ZLSwuOHTsGwPSwiUOHDmHBggU4cOAAXn75ZZSWlpqbI71eD4VCgcOHD+P+++9HYGAg8vLyMHPmTNski4iI7IpXpIiIyGktWrQIN27cwD/+8Q+kpaUhLy8PiYmJyMnJAQCcOHECs2bNwsiRI+Hr64tf/vKXqK+vR3t7u/l3eHt7m5soAAgNDUVUVJS5ieredvPmTYu/nZyc3OPn0tLSXuP8/PPPUV5eDl9fX/OVtICAAHR0dKCiogIBAQFYvnw5UlNT8dBDD+Fvf/sbamtrf2h6iIjIgdhIERGRU/P09MTPfvYzbNq0Cfn5+Vi+fDk2b96Mqqoq/PznP0d8fDw++OADFBYWmu9j0uv15te7u7tb/D6JRNLrNqPReM8xtra2YurUqSguLrb4unbtGh5//HEAwL59+1BQUICUlBS8++67GD9+PC5cuHDPf5OIiByLjRQREbmUSZMmoa2tDYWFhTAajfjrX/+K6dOnY/z48bhx48ag/Z07m5wLFy4gJiam17GJiYm4fv06QkJCMG7cOIsvf39/87gpU6YgKysL+fn5mDx5Mt56661Bi5eIiOyLjRQRETml+vp6PPjggzhw4ACuXLmCyspKHDx4ENu2bUN6ejrGjRsHg8GAV199FV999RX2799vvsdpMJw/fx7btm3DtWvXkJ2djYMHD2LdunW9jl26dCmCgoKQnp6Oc+fOobKyEnl5eVi7di2++eYbVFZWIisrCwUFBaiursZ//vMfXL9+vc/GjIiInB/XkSIiIqckl8uRlJSEXbt2oaKiAgaDAaNHj8aKFSvw/PPPw8vLCzt37sQrr7yCrKwszJgxA1u2bMGyZcsG5e9v2LABly5dwosvvgg/Pz/s3LkTqampvY719vbG2bNnsXHjRixcuBAajQYjR47ErFmz4OfnB61Wiy+//BK5ubmor69HWFgYMjIy8PTTTw9KrEREZH98ah8REdEdoqKisH79eqxfv97RoRARkZPi1D4iIiIiIiIrsZEiIiIiIiKyEqf2ERERERERWYlXpIiIiIiIiKzERoqIiIiIiMhKbKSIiIiIiIisxEaKiIiIiIjISmykiIiIiIiIrMRGioiIiIiIyEpspIiIiIiIiKzERoqIiIiIiMhK/w8N0p6fDxHVdQAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Plotting: Actual vs Predicted Prices with Different Colors\n", + "plt.figure(figsize=(10, 6))\n", + "plt.scatter(range(len(y_test)), y_test, color='blue', alpha=0.7, label='Actual Prices')\n", + "plt.scatter(range(len(y_test)), y_pred, color='orange', alpha=0.7, label='Predicted Prices')\n", + "plt.title(\"Actual vs Predicted Netflix Stock Prices\")\n", + "plt.xlabel(\"Samples\")\n", + "plt.ylabel(\"Prices (USD)\")\n", + "plt.legend()\n", + "plt.grid(True)\n", + "plt.show()" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "ml_env", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.7" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/tests/test_gradient_boosting_errors.py b/tests/test_gradient_boosting_errors.py new file mode 100644 index 0000000..63b0501 --- /dev/null +++ b/tests/test_gradient_boosting_errors.py @@ -0,0 +1,66 @@ +import numpy as np +from models.gradient_boosting_regressor import DecisionTree, GradientBoostingRegressor + +def test_decision_tree_errors(): + # Test cases for DecisionTree initialization + try: + tree = DecisionTree(min_samples_split=1) + except ValueError as e: + print("Error 1:", str(e)) + + try: + tree = DecisionTree(max_depth=-1) + except ValueError as e: + print("Error 2:", str(e)) + + # Test cases for fit method (DecisionTree) + tree = DecisionTree() + + try: + tree.fit([[1, 2], [3, 4]], [1, 2]) # X and y mismatch + except ValueError as e: + print("Error 3:", str(e)) + +def test_gradient_boosting_errors(): + # Test cases for GradientBoostingRegressor initialization + try: + gb = GradientBoostingRegressor(n_estimators=0) + except ValueError as e: + print("Error 8:", str(e)) + + try: + gb = GradientBoostingRegressor(learning_rate=1.5) + except ValueError as e: + print("Error 9:", str(e)) + + try: + gb = GradientBoostingRegressor(max_depth=-1) + except ValueError as e: + print("Error 10:", str(e)) + + try: + gb = GradientBoostingRegressor(min_samples_split=1) + except ValueError as e: + print("Error 11:", str(e)) + + # Test cases for fit method (GradientBoostingRegressor) + gb = GradientBoostingRegressor() + + try: + gb.fit([[1, 2], [3, 4]], [1, 2, 3]) # X and y mismatch + except ValueError as e: + print("Error 12:", str(e)) + + try: + gb.fit([[1, 2], [3, 4]], np.array([1, 2, 3])) # y length mismatch + except ValueError as e: + print("Error 13:", str(e)) + + try: + gb.fit("not an array", [1, 2]) # X is not a numpy array + except ValueError as e: + print("Error 14:", str(e)) + +if __name__ == "__main__": + test_decision_tree_errors() + test_gradient_boosting_errors() \ No newline at end of file diff --git a/tests/test_gradient_boosting_laptops.py b/tests/test_gradient_boosting_laptops.py new file mode 100644 index 0000000..19a3dbd --- /dev/null +++ b/tests/test_gradient_boosting_laptops.py @@ -0,0 +1,32 @@ +import numpy as np +from sklearn.model_selection import train_test_split +from sklearn.metrics import mean_squared_error, r2_score +import pandas as pd +from models.gradient_boosting_regressor import GradientBoostingRegressor + +file_path = "tests/laptop_prices.csv" +data = pd.read_csv(file_path) + +features = ['Inches', 'Ram', 'Weight', 'CPU_freq', 'PrimaryStorage', 'SecondaryStorage'] +target = 'Price_euros' + +X = data[features].values +y = data[target].values + +X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) + +gbr = GradientBoostingRegressor(n_estimators=50, learning_rate=0.1, max_depth=3) + +# Train the model +print("Training the Gradient Boosting Regressor...") +gbr.fit(X_train, y_train) + +# Make predictions +y_pred = gbr.predict(X_test) + +# Evaluate the model +mse = mean_squared_error(y_test, y_pred) +r2 = r2_score(y_test, y_pred) + +print(f"Test Mean Squared Error (MSE): {mse:.2f}") +print(f"Test R² Score: {r2:.4f}") \ No newline at end of file diff --git a/tests/test_netflix_regressor.py b/tests/test_netflix_regressor.py new file mode 100644 index 0000000..7abc38e --- /dev/null +++ b/tests/test_netflix_regressor.py @@ -0,0 +1,54 @@ +import pandas as pd +import numpy as np +from sklearn.model_selection import train_test_split +from sklearn.metrics import mean_squared_error, r2_score +from models.gradient_boosting_regressor import GradientBoostingRegressor + +def load_netflix_data(file_path): + """ + Load Netflix data from a CSV file and preprocess it. + """ + data = pd.read_csv(file_path) + + required_columns = ["Open", "High", "Low", "Close"] + for col in required_columns: + if col not in data.columns: + raise ValueError(f"Missing required column: {col}") + + data = data.dropna() # Drop missing values + X = data[["Open", "High", "Low"]].values # Features + y = data["Close"].values # Target + + return X, y + +def test_netflix_regressor(file_path): + """ + Test GradientBoostingRegressor on the Netflix dataset. + """ + X, y = load_netflix_data(file_path) + + X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42) + + gbr = GradientBoostingRegressor(n_estimators=20, learning_rate=0.1, max_depth=3, min_samples_split=2) + + # Train the model + print("Training Gradient Boosting Regressor...") + gbr.fit(X_train, y_train) + print("Training complete.") + + # Make predictions + print("Making predictions...") + y_pred = gbr.predict(X_test) + + # Evaluate performance + mse = mean_squared_error(y_test, y_pred) + r2 = r2_score(y_test, y_pred) + print(f"Mean Squared Error: {mse:.4f}") + print(f"R-squared Value: {r2:.4f}") + +if __name__ == "__main__": + # Path to the dataset + dataset_path = "tests/netflix.csv" + + print("Testing Gradient Boosting Regressor on Netflix Data...") + test_netflix_regressor(dataset_path) \ No newline at end of file diff --git a/tests/test_random_regression.py b/tests/test_random_regression.py new file mode 100644 index 0000000..98f8fef --- /dev/null +++ b/tests/test_random_regression.py @@ -0,0 +1,38 @@ +import numpy as np +from sklearn.metrics import mean_squared_error, r2_score +from sklearn.model_selection import train_test_split +from models.gradient_boosting_regressor import GradientBoostingRegressor + +# Generate Random Regression Dataset +def generate_random_data(n_samples=1000, n_features=5, noise=0.1, random_state=42): + """ + Generates a random regression dataset. + """ + np.random.seed(random_state) + X = np.random.rand(n_samples, n_features) + coefficients = np.random.rand(n_features) + y = X @ coefficients + noise * np.random.randn(n_samples) + return X, y + +def main(): + # Generate the random dataset + X, y = generate_random_data(n_samples=500, n_features=5, noise=0.1) + + X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) + + gbr = GradientBoostingRegressor(n_estimators=50, learning_rate=0.1, max_depth=3) + + print("Training the Gradient Boosting Regressor...") + gbr.fit(X_train, y_train) + + y_pred = gbr.predict(X_test) + + # Evaluate the model + mse = mean_squared_error(y_test, y_pred) + r2 = r2_score(y_test, y_pred) + + print(f"Test Mean Squared Error (MSE): {mse:.4f}") + print(f"Test R² Score: {r2:.4f}") + +if __name__ == "__main__": + main() \ No newline at end of file